在OpenGL中更改焦点时Windows闪烁

Posted

技术标签:

【中文标题】在OpenGL中更改焦点时Windows闪烁【英文标题】:WIndows Flickering when changing focus in OpenGL 【发布时间】:2018-04-05 19:47:41 【问题描述】:

我正在做一个项目,该项目需要我在两个窗口之间切换,一个使用 OpenCV,一个使用 OpenGL,都是全屏的。

GLFW 键事件可以正常打开 OpenCV 窗口,但关闭 OpenCV 窗口并尝试将焦点返回到 OpenGL 窗口会导致窗口闪烁并反复尝试提供焦点。这是我在 while 循环内将焦点返回到 OpenGL 窗口的代码。

编辑:我发现它只发生在 OpenGL 窗口全屏时,这是该程序的要求。写入控制台显示代码被多次调用

if(!glfwGetWindowAttrib(window, GLFW_FOCUSED))

    glfwFocusWindow(window);
    while(!glfwGetWindowAttrib(window, GLFW_FOCUSED))
    
    

【问题讨论】:

【参考方案1】:

我设法通过在我的 openGL 窗口上将 GLFW 标志 GLFW_AUTO_ICONIFY 设置为 false 来解决我的问题。

【讨论】:

【参考方案2】:

您发布的方式不是设置焦点的正确方式。

使用glfwSetWindowCloseCallback 设置关闭回调。 在该回调中,您可以将焦点设置到另一个窗口。

【讨论】:

感谢您的意见,尽管正在关闭的窗口是一个 OpenCV 窗口并且无权访问 GLFW 回调,除非我误解了您的回复。

以上是关于在OpenGL中更改焦点时Windows闪烁的主要内容,如果未能解决你的问题,请参考以下文章

opengl刷新界面时要怎么阻止windows窗口重绘

OpenGL闪烁?

独立的 Windows 应用程序在焦点更改时挂起

win32 窗口阻止键盘布局更改

在特定JTable单元上设置焦点和闪烁光标

OpenGl和闪烁