OpenGL非独占全屏模式(AKA全屏无边框窗口)

Fro*_*ngo 5 c++ windows opengl fullscreen

我正在尝试获得全屏无边框窗口的支持,但是我发现的任何信息都无济于事。

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

我知道它处于排他的全屏模式,因为WDM停止为我的窗口渲染小小的Aero预览。通过使窗口聚焦和不聚焦,我也会得到桌面闪烁。

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

我知道在DirectX中解决此问题的方法只是创建窗口标记设置为true的设备。但是,我从未在OpenGL中看到过类似的东西。

根据第一条评论进行编辑:

我的窗口没有使用任何第三方库,只有Win32和OpenGL。

编辑:

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

对于硬件,我将GTX690与Win7 x64上的最新驱动程序配合使用。

小智 3

在 ChoosePixelFormat/SetPixelFormat 的 PIXELFORMATDESCRIPTOR 中使用 PFD_SUPPORT_COMPOSITION。

请参阅OpenGL 管道时事通讯 - 第 003 卷