微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

全屏无边框窗口“拥有”窗口顶部

我有两个OpenGL窗口:一个是主窗口,另一个是由主窗口“拥有”的小窗口(在CreateWindowEx中设置了hWndParent,但未设置WS_CHILD样式)。 如果我然后将我的主窗口转换为无边界和与我的桌面相同的大小,它将跳转到较小的窗口前,即使它是拥有的,这应该是不可能的( https://msdn.microsoft.com/en-us /library/windows/desktop/ms632599%28v=vs.85%29.aspx#owned_windows )。 即使较小的窗口始终处于顶部,情况也是如此。

就自己而言,这并不可怕,但核心问题是,我仍然可以点击我的主窗口,在较小的窗口的位置,较小的窗口将在面前popup。 通过点击主窗口,然后点击主窗口,我可以在这两个窗口之间不断地进行切换。

如果我使主窗口的大小比整个桌面大小小1个像素,则不会发生这些问题,并且窗口的行为与预期相同。

我找不到任何描述此行为的文档。 这是一个function,防止窗口内容(如video回放)没有logging,或我只是错过了?

链接对象与g ++时的问题

无法手动检索和存储指向OpenGL函数的指针

Arch Linux上的OpenGL 3.3

如何PyOpengl或pyglet在桌面上绘制?

绘制在字面上的一切

我会提到我没有在这里使用分层或透明的窗口,所以我不认为点击应该是可能的?

谢谢

Opengl linux未定义的基本function参考

wglCreateContextAttribsARB在有能力的硬件上返回NULL

OpenGL:各向异性过滤纹理将使用多less内存?

gl_FragDepth破坏颜色

什么库是wglSwapIntervalEXT中的?

你所遇到的很可能是一个OpenGL实现的错误,这个错误是由驱动程序在“窗口化”和“全屏”渲染之间切换的启发式引发的:你看,OpenGL没有像Direct3D那样的特殊“全屏模式”。 相反,覆盖整个屏幕的无边界窗口(不会被外部窗口覆盖)可能会触发“全屏”检测,这可能会导致OpenGL实现切换到另一个代码路径(即所有像素所有权测试都被禁用, framebuffer翻转直接进入显示扫描,绕过窗口合成器。

你在那里做什么是非常罕见的,它可能会通过所有一致性测试。 有一个OpenGL的窗口子窗口是不常见的,他们浮动是更罕见的。

如果你有一个简单的示例展示,你应该把它作为驱动程序供应商的错误报告。 在此期间,我提出了一个解决方法:使您的OpenGL窗口成为顶层窗口的子窗口(当然需要在顶层WM_SIZE中调整大小),并使浮动窗口成为顶层的另一个子窗口; 父窗口中的孩子之间的z顺序受到尊重和保留。 作为一个孩子到顶层窗口应该抑制大多数启发式和OpenGL驱动程序不应该在OpenGL父窗口的边界和大小循环。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐