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