【问题标题】:Mix opengl and directdraw in different windows of the same application?在同一应用程序的不同窗口中混合opengl和directdraw?
【发布时间】:2008-11-11 22:13:27
【问题描述】:

我正在开发一个有两个窗口的应用程序:

  • 窗口 1:渲染直接绘制表面
  • 窗口 2:我希望喜欢让它执行纯 OpenGL 调用

我不想在同一个窗口中混合使用 OpenGL 和 DirectDraw。

我从 Open GL 常见问题解答 (http://www.opengl.org/resources/faq/technical/mswindows.htm) 中看到,您不能在同一个窗口内混合 API 调用。

所以,我的问题是:一个应用程序是否可以让一个窗口进行直接绘制而另一个使用 OpenGL?

【问题讨论】:

    标签: opengl directx directdraw


    【解决方案1】:

    在同一进程中运行两者应该没有问题,当然除了 ICD 视频驱动程序中的错误。

    可能最快的判断方法是注释掉 OpenGL 代码并检查应用程序是否仍然崩溃。

    或者,强制您的 OpenGL 代码使用 Microsoft 实现——它是基于 XP 的软件和基于 Vista 的 Direct3D——不应该有冲突。如果ddraw问题仍然存在,很可能不是OGL故障。

    【讨论】:

      【解决方案2】:

      嗯……我已经将 OpenGL 的东西隔离到一个线程中。你是这个意思吗?或者,我认为您是在说开始一个新流程。

      问题是:我看到 BLT 上的 DirectDraw 代码崩溃。它是随机的,但我担心 OpenGL 的东西正在扼杀它。

      【讨论】:

        【解决方案3】:

        最坏的情况:让您的主程序生成执行一种类型的渲染(比如说 DirectDraw)。让它产生一个执行其他类型(OpenGL)的进程。使用管道在两者之间进行通信。这将要求您有两个进程,这可能是一种解决方法,但至少可以工作。

        【讨论】:

        • 您可以拥有两个具有相同可执行文件的进程:只需在子进程中使用不同的条件分支。
        • @JudgeMaygarden:没错,我的意思是“两个过程”
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-08
        相关资源
        最近更新 更多