我有一个带有OpenGL窗口的应用程序作为主窗口的子窗口。
当我在OpenGL窗口上方显示一个对话框时,它不会被绘制。就好像它没有得到WM_PAINT
个消息。如果我可以猜到对话框的标题栏位置,我可以拖动它,它仍然响应。
我意识到这可能是一个模糊的问题,但我想知道是否有其他人之前已经看过这种行为并知道解决方案?
我想知道像素格式描述符是否有所作为 - 我有PFD_DRAW_TO_WINDOW
,但更改为PDF_DRAW_TO_BITMAP
没有任何区别。我不确定我还应该关注什么?
答案 0 :(得分:1)
开溜。应该已经给出了所有的细节。我使用Parallels在Mac OS X上的虚拟机中运行Windows。我从Parallels 3升级到4,现在一切正常。我怀疑Parallels视频驱动程序问题。
感谢所有回复建议的人。
答案 1 :(得分:0)
你的opengl窗口是否经常渲染。 3D硬件可能只是渲染成覆盖对话框的覆盖图。如果您将对话框放置在与主窗口重叠的位置,您能看到其中的一些吗?
尝试暂停渲染到主显示屏以查看它是否会影响结果。
您还需要确保您的窗口样式确保剪切结果...
cs.style |= WS_CLIPSIBLINGS | WS_CLIPCHILDREN ;
您应该检查本MSDN文章中提到的所有项目,因为它涵盖了在窗口中正确获取opengl呈现的许多基础知识。
答案 2 :(得分:0)
您可能需要关闭叠加层。它可以通过强制返回缓冲区呈现方法来复制而不是交换。
使用wglChoosePixelFormatARB,其中一个参数应为
WGL_SWAP_METHOD_ARB,其值为WGL_SWAP_COPY_ARB
答案 3 :(得分:0)
这可能看起来很愚蠢,但你确定你的OpenGL窗口没有被标记为“最顶层”吗?
对话框是否也会在窗口边框后面或OpenGL渲染矩形后面消失?