代码之家  ›  专栏  ›  技术社区  ›  Steve Folly

Windows未在OpenGL窗口上方绘制

  •  1
  • Steve Folly  · 技术社区  · 16 年前

    我有一个应用程序,它有一个OpenGL窗口作为主窗口的子窗口。

    当我在OpenGL窗口上方显示对话框时,它不会被绘制。这就像它没有得到 WM_PAINT 信息。如果我能猜出对话框的标题栏位置,我可以拖动它,它仍然有响应。

    我意识到这可能是一个模糊的问题,但我想知道是否有其他人以前见过这种行为并知道解决方案?

    我想知道像素格式描述符是否会有所不同——我有 PFD_DRAW_TO_WINDOW ,但更改为 PDF_DRAW_TO_BITMAP 没有任何区别。我不确定我还应该看什么?

    4 回复  |  直到 12 年前
        1
  •  1
  •   Steve Folly    16 年前

    家伙。本应提供所有细节。我使用Parallels在Mac OS X上的虚拟机中运行Windows。我从Parallels 3升级到4,现在一切正常。我怀疑是Parallels视频驱动程序问题。

    感谢所有给出建议的人。

        2
  •  0
  •   Rik Heywood    16 年前

    您的opengl窗口是否持续渲染。3D硬件可能只是渲染成覆盖层,从而过度绘制对话框。如果你将对话框放置在与主窗口重叠的位置,你能看到其中的一些吗?

    尝试暂停渲染到主显示器,看看它是否会影响结果。

    您还需要确保您的窗口样式确保结果被剪裁。..

    cs.style |= WS_CLIPSIBLINGS | WS_CLIPCHILDREN ;
    

    您应该检查一下这篇MSDN文章中提到的所有项目,因为它涵盖了在窗口中正确渲染opengl的许多基础知识。

    http://msdn.microsoft.com/en-us/library/ms970745.aspx

        3
  •  0
  •   Alexander    16 年前

    使用wglChoosePixelFormatARB,其中一个参数应为

    值为WGL_SWAP_COPY_ARB的WGL_SWAP-METHOD_ARB

        4
  •  0
  •   rockeye    16 年前

    这可能看起来很愚蠢,但你确定你的OpenGL窗口没有被标记为“最顶部”吗?

    对话框是否也消失在窗口边框后面或OpenGL渲染矩形后面?