2011-10-07 7 views
5

DirectX를 사용하여 OpenGL 렌더링 창으로 렌더링 할 수 있기를 원합니다. 이는 이후의 기능이 DirectX에서만 지원되기 때문입니다.DirectX와 OpenGL의 혼합

나는 이것을 몇 년 전에 할 수 있다는 소식을 들었지만 여전히 가능해야한다고 생각합니다.

DirectX에서 VRAM의 정확한 부분과 정확한 깊이 버퍼를 가리키는 것이 포함된다고 생각합니다.

튜토리얼 또는 간단히 설명하면 매우 유용합니다.

+0

왜 OpenGL에 출력해야합니까? DirectX를 사용할 수 있다면 왜 DX 렌더러를 사용해야합니까? – glenatron

+0

주로 Windows 하위 창에서 OpenGL 렌더링 화면을 올바르게 렌더링하려면 OpenGL 명령을 사용하는 Windows가 필요합니다. – ceorron

+8

"이후 기능은 Direct X에서만 지원되기 때문입니다." 그리고 그 특징은 무엇입니까? OpenGL에서 사용할 수없는 D3D 기능은 거의 없습니다. –

답변

2

OpenGL과 Direct3D를 함께 사용하면 작동하지 않으며 AFAIK는 전혀 사용되지 않습니다. OpenGL에서 제공하지 않는 Direct3D의 어떤 기능을 요청할 수 있습니까?

3

적어도 NVIDIA는 NV_DX_interop extension입니다. Direct3D 9 버퍼/텍스처/서페이스를 OpenGL 버퍼/텍스처/렌더링 버퍼로 직접 사용하게합니다 (따라서 다른 방법이됩니다). 그러나 나는 이것에 대한 어떤 경험도 가지고 있지 않으며 그것이 널리지지되거나 실제로 선을 이룰 수 있는지 모른다.

Direct3D에서만 사용할 수 있다고 생각되는 기능이 더 많습니다. Direct3D 및 OpenGL에서 사용할 수있는 기능 (있는 경우)이 많지 않으므로 OpenGL에서이 기능을 구현하는 방법을 알려줄 수 있습니다. 비록 당신이 ATI 카드를 가지고 있다면, 실제로 이용 가능하고 실제로 올바르게 작동하는 것은 때로는 두 가지 분리 된 일이 될 수 있습니다.

+0

interop을 사용하더라도 두 API를 _same_ 창에 렌더링 할 수 없습니다. 다른 윈도우 또는 화면 밖의 렌더링 컨텍스트가있는 경우이를 사용할 수 있습니다. 그러나 같은 표면에는 없습니다. –

+0

OpenGL을 통해 하나의 화면에서 렌더링 할 수 있으며 다른 DirectX로 렌더링 한 다음 텍스처를 복사하여 결합 할 수 있습니다. –

0

하실 수 있습니다. 적어도 nVIDIA를 위해서! NV_DX_interop을 확인하십시오. 그러나 OpenGL은 DirectX보다 더 많은 RAW/Low 레벨이므로 모든 DirectX 기능이 OpenGL에서 지원됩니다! 구현 방법은 다를 수 있습니다. 다시 말하지만, 원하는 DirectX 기능을 알려 주시면 다시 구현하는 방법을 알려줍니다.

0

내가 직접 연구하고있는 OpenGL과 Direct3D의 차이점 중 하나는 DirectShow (Direct3D의 하위 집합)에 Panasonic DVCPRO-HD 기반 카메라의 비디오 캡처 필터가 있다는 것입니다. 따라서 라이브 스트림은 API를 통해 수집되므로 OpenGL 라이브러리에 입력으로 사용하고 싶습니다. 그러한 라이브러리 중 하나는 OpenGL 기반 OpenFrameWorks입니다. 나는이 전송을 얼마나 효율적으로 할 수 있는지보고 싶다. 기존의 OpenFrameWorks Video API는 다소 오래되고 더 이상 사용되지 않는 DirectShow API를 사용하며 DirectShow에서 OpenFrameWorks로 픽셀을 가져 오는 무차별 전략을 사용합니다.