当焦点丢失时,全屏GLFW窗口消失了

Fullscreen GLFW window disappears when focus is lost

本文关键字:全屏 GLFW 窗口 消失了 焦点      更新时间:2023-10-16

我正在创建一个这样的opengl窗口:

auto mode = glfwGetVideoMode(monitor);
mWindowWidth = mode->width;
mWindowHeight = mode->height;
glfwWindowHint(GLFW_RED_BITS, mode->redBits);
glfwWindowHint(GLFW_GREEN_BITS, mode->greenBits);
glfwWindowHint(GLFW_BLUE_BITS, mode->blueBits);
glfwWindowHint(GLFW_REFRESH_RATE, mode->refreshRate);
mWindow = glfwCreateWindow(mWindowWidth, mWindowHeight, "Test", monitor, NULL);

这很好,除了一个主要缺陷:当我将另一个窗口集中在另一个显示器上时,GLFW窗口在后台消失。

如何创建一个(全屏(GLFW窗口,该窗口总是在给定的显示器上?

GLFW的文档可在此处提供http://www.glfw.org/docs/latest/window_guide.html#window_window_windowed_fuldowed_full_screen

从上面的链接

部分:窗口相关提示

GLFW_AUTO_ICONIFY指定全屏幕窗口是否会自动成像并还原输入焦点丢失的先前视频模式。对于窗口模式窗口,忽略了此提示。

默认值

GLFW_TRUE

接受的值

GLFW_TRUE or GLFW_FALSE

将其设置为GLFW_FALSE

glfwWindowHint(GLFW_AUTO_ICONFIY, GLFW_FALSE);

请注意,GLFW_TRUEGLFW_FALSE是并且将永远是10

似乎自动最小化对焦点损失的最小化由 GLFW_AUTO_ICONIFY提示控制,默认情况下启用了。

GLFW_AUTO_ICONIFY指定全屏幕窗口是否会自动成像并在输入焦点损失上恢复以前的视频模式。
对于窗口模式窗口,忽略了此提示。

可以用:

禁用它
glfwWindowHint(GLFW_AUTO_ICONIFY, 0);