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

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

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

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

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

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

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

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

编辑:

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

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

最佳答案 在ChoosePixelFormat / SetPixelFormat的PIXELFORMATDESCRIPTOR中使用PFD_SUPPORT_COMPOSITION.

The OpenGL Pipeline Newsletter – Volume 003

点赞