c++ - OpenGL 非独占全屏模式(又名全屏无边框窗口)

标签 c++ windows opengl fullscreen

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

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

我知道它处于独占全屏模式,因为 WDM 停止为我的窗口渲染小的 aero 预览。我还因聚焦和取消聚焦窗口而导致桌面闪烁。

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

我知道在 DirectX 中解决这个问题的方法很简单,就是创 build 备时将 windowed 标志设置为 true。但是,我从未在 OpenGL 中看到过类似的东西。

根据第一条评论编辑:

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

编辑:

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

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

最佳答案

在 ChoosePixelFormat/SetPixelFormat 的 PIXELFORMATDESCRIPTOR 中使用 PFD_SUPPORT_COMPOSITION。

参见 The OpenGL Pipeline Newsletter - Volume 003

关于c++ - OpenGL 非独占全屏模式(又名全屏无边框窗口),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22259067/

相关文章:

c++ - C++ 中内置类型的运算符重载以访问二维数组中的元素

c++ - 是否可以在使用 const 的所有地方使用 volatile?

windows - "Android Create"在 Windows 7 中调用失败 - 缺少 JDK

c++ - QVBoxLayout 什么时候重新计算布局?

opengl - 纹理可以绑定(bind)到多个 fbo 吗?

opengl - 可扩展环境遮挡渲染问题

c++ - 编译器看不到函数,但可以看到以相同方式使用的所有其他函数

c++ - 如何存储霍夫曼变换后的二进制代码?

c++ - 让 Windows 尝试读取文件

c++ - 无法使用 OpenGL 绘制 Sierpinski