WIndows 在 OpenGL 中改变焦点时闪烁
WIndows Flickering when changing focus in OpenGL
我正在做一个项目,需要我在两个 windows 之间切换,一个使用 OpenCV,一个使用 OpenGL,两者都是全屏。
GLFW 键事件打开 OpenCV window 正常,但关闭 OpenCV window,并尝试 return 聚焦到 OpenGL window 结果 window 闪烁并反复尝试聚焦。这是我在 while 循环中 return 聚焦到 OpenGL window 的代码。
编辑:我发现它仅在 OpenGL window 全屏时发生,这是该程序的要求。写入控制台显示代码被多次调用
if(!glfwGetWindowAttrib(window, GLFW_FOCUSED))
{
glfwFocusWindow(window);
while(!glfwGetWindowAttrib(window, GLFW_FOCUSED))
{
}
}
您发布的方式不是设置焦点的正确方式。
使用glfwSetWindowCloseCallback
设置关闭回调。
在该回调中,您可以将焦点设置到另一个 window。
我通过在我的 openGL window 上将 GLFW 标志 GLFW_AUTO_ICONIFY 设置为 false 来解决我的问题。
我正在做一个项目,需要我在两个 windows 之间切换,一个使用 OpenCV,一个使用 OpenGL,两者都是全屏。
GLFW 键事件打开 OpenCV window 正常,但关闭 OpenCV window,并尝试 return 聚焦到 OpenGL window 结果 window 闪烁并反复尝试聚焦。这是我在 while 循环中 return 聚焦到 OpenGL window 的代码。
编辑:我发现它仅在 OpenGL window 全屏时发生,这是该程序的要求。写入控制台显示代码被多次调用
if(!glfwGetWindowAttrib(window, GLFW_FOCUSED))
{
glfwFocusWindow(window);
while(!glfwGetWindowAttrib(window, GLFW_FOCUSED))
{
}
}
您发布的方式不是设置焦点的正确方式。
使用glfwSetWindowCloseCallback
设置关闭回调。
在该回调中,您可以将焦点设置到另一个 window。
我通过在我的 openGL window 上将 GLFW 标志 GLFW_AUTO_ICONIFY 设置为 false 来解决我的问题。