OpenGL非独占全屏模式(A.K.A.全屏无边框窗口)

时间:2014-03-07 19:32:20

标签: c++ windows opengl fullscreen

我正在尝试获得全屏无边框窗口的支持,但我发现的信息都没有帮助。

无论窗口是否设置为WS_EX_TOPMOST,窗口将始终处于独占全屏模式。我使用WinSpy ++的全屏无边框窗口模式检查了游戏中的窗口样式,我使用的样式是相同的。

我知道它处于独占全屏模式,因为WDM停止渲染窗口的小空间预览。我也可以通过聚焦和不聚焦窗口来获得桌面闪烁。

我能够获得类似于我想要的行为的唯一方法是欺骗窗口,以为我不想要全屏模式。我这样做的方法是将窗口位置调整1px,使其与屏幕的位置和大小不匹配。这会阻止Windows自动打开独占全屏模式。

我知道在DirectX中解决这个问题的方法就是创建窗口标志设置为true的设备。但是,我在OpenGL中从未见过这样的东西。

按照第一条评论进行修改:

我没有使用任何第三方库进行窗口化,只需使用Win32和OpenGL。

修改

我使用WS_POPUP作为窗口样式。在我做过的一些DirectX测试中使用相同的窗口样式,我可以通过更改'windowed'属性来正确创建全屏无边框窗口或全屏独占窗口。

对于硬件,我在Win7 x64上使用带有最新驱动程序的GTX690。

1 个答案:

答案 0 :(得分:2)

在ChoosePixelFormat / SetPixelFormat的PIXELFORMATDESCRIPTOR中使用PFD_SUPPORT_COMPOSITION。

请参阅The OpenGL Pipeline Newsletter - Volume 003