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

Bor*_*ris 2 c++ windows opengl glfw

我正在创建一个这样的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);
Run Code Online (Sandbox Code Playgroud)

这样可以正常工作,除了一个主要缺陷:当我关注另一个窗口时(即使它在另一个监视器上!)GLFW窗口在后台消失.

如何创建一个始终位于给定监视器顶部的(全屏)GLFW窗口?

Hol*_*Cat 5

看来焦距损失的自动最小化由GLFW_AUTO_ICONIFY提示控制,默认情况下启用.

GLFW_AUTO_ICONIFY指定全屏窗口是否会在输入焦点丢失时自动图标化并恢复上一个视频模式.
窗口模式窗口会忽略此提示.

它可以被禁用:

glfwWindowHint(GLFW_AUTO_ICONIFY, 0);
Run Code Online (Sandbox Code Playgroud)


Sag*_*r V 5

有关GLFW的文档,请访问http://www.glfw.org/docs/latest/window_guide.html#window_windowed_full_screen

从上面的链接

部分:与窗口相关的提示

GLFW_AUTO_ICONIFY指定全屏窗口是否会在输入焦点丢失时自动图标化并恢复上一个视频模式.窗口模式窗口会忽略此提示.

默认值

GLFW_TRUE

接受的价值观

GLFW_TRUE or GLFW_FALSE

设置为 GLFW_FALSE

那是

glfwWindowHint(GLFW_AUTO_ICONFIY, GLFW_FALSE);
Run Code Online (Sandbox Code Playgroud)

需要注意的是GLFW_TRUEGLFW_FALSE现在和将来永远是公正10.