混合DirectX和OpenGL

时间:2011-10-07 11:30:03

标签: c++ opengl directx

我希望能够使用DirectX渲染到OpenGL渲染窗口。这是因为我之后的功能仅在DirectX中受支持。

我听说几年前可以做到这一点,我希望它仍然有可能。

我想它会将DirectX指向VRAM的正确部分和正确的深度缓冲区。

另外,教程或简单的解释将非常有用。

4 个答案:

答案 0 :(得分:3)

至少NVIDIA有NV_DX_interop extension,让你直接使用Direct3D 9缓冲区/纹理/表面作为OpenGL缓冲区/纹理/渲染缓冲区(因此反过来说)。但我对此没有任何经验,我不知道它是否得到广泛支持或实际上是否有用。

您认为哪些功能仅适用于Direct3D,这将更具有效性。也许我们可以向您展示如何使用OpenGL实现它,因为Direct3D中没有很多可用的功能(如果有的话)而不是OpenGL。虽然如果你有一张ATI卡,可用并且实际上正常工作有时可能是两个单独的东西。

答案 1 :(得分:2)

混合OpenGL和Direct3D将无法正常工作,而AFAIK从未习惯过。请问OpenGL不提供哪些Direct3D功能?

答案 2 :(得分:0)

你可以。至少对于nVIDIA来说!检查NV_DX_interop。但是,OpenGL支持每个DirectX功能,因为OpenGL比DirectX更低RAW /低级别!它的实施方式可能有所不同。再次,告诉我们你想要的DirectX功能,我可以告诉你如何重新实现它。

答案 3 :(得分:0)

我正在研究的OpenGL和Direct3D之间的区别的一个具体例子是,在DirectShow(Direct3D的一个子集)中,我的Panasonic DVCPRO-HD摄像机有视频捕捉过滤器。所以通过该API收集的实时流,我想用作OpenGL库的输入。一个这样的库是OpenFrameWorks,它是基于OpenGL的。我希望看到我能够有效地进行这种转移。现有的OpenFrameWorks Video API使用稍旧且已弃用的DirectShow API,并使用强力策略将DirectShow中的像素转换为OpenFrameWorks。