문제

OpenGL과 DirectX를 믹싱하는 것이 권장되지는 않지만 별도의 그래픽 API : S를 사용하는 두 가지 다른 응용 프로그램 사이에 브리지를 만들려고 노력하고 있으며 데이터를 공유하는 기술, 특히 텍스처를 공유하는 기술이 있기를 바랍니다.

다음과 같이 Direct3d로 생성되는 텍스처가 있습니다.

d3_device-> CreateTexture(width, height,
  1, D3DUSAGE_RENDERTARGET, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT,
  &texture, NULL);

시스템 메모리를 통해 왕복을 취하지 않고 OpenGL 에서이 텍스처를 사용할 수있는 방법이 있습니까?

도움이 되었습니까?

해결책

아니.

Photoshop과 다른 이미지 뷰어에서 이미지를 공유하는 것처럼 생각하십시오. 이 두 응용 프로그램이 공유 한 메모리 관리 라이브러리가 필요합니다.

다른 팁

네. 이전에 게시 한대로 (아래 참조) 적어도 하나의 솔루션이 있어야합니다. 가능한 두 가지 해결책을 찾았습니다.

1) NVIDIA 카드에서 새로운 확장이 256 Dirvers에 통합되었습니다. 보다 http://developer.download.nvidia.com/opengl/specs/wgl_nv_dx_interop.txt

2) DXGI는 Vista 및 Windows 7의 모든 Windows를 합성하기위한 원동력입니다. MSDN.MICROSOFT.com/en-us/library/ee913554.aspx 참조

나는 아직 두 솔루션에 대한 경험을 얻지 못했지만 그 중 하나를 테스트 할 시간을 찾을 수 있기를 바랍니다. 그러나 나에게 첫 번째는 더 쉬운 것 같습니다.


가능하다고 생각합니다. 최근 Windows 버전 (Vista 및 7)에서는 작업 표시 줄 (GDI, Direct3D 또는 OpenGL)의 Window 콘텐츠 미리보기를 볼 수 있습니다. 내 지식으로는 OpenGL 미리보기가 이전 Windows 버전에서는 지원되지 않았습니다. 따라서 최소한 최신 버전에서는 다른 프로세스 간에도 렌더 컨텍스트를 결합하거나 공유 할 수있는 가능성이 있어야합니다. 이는 렌더 컨텍스트 시스템을 공유하여 다른 렌더링 효과를 만들기 위해 렌더 컨텍스트를 공유하는 다른 현대 플랫폼에서도 마찬가지입니다.

나는 그것이 불가능하다고 생각합니다. 둘 다 텍스처 모델이 다르기 때문에.

DirectX 또는 OpenGL 없이는 텍스처 메모리에 직접 액세스 할 수 없습니다.

기타 웨이 : 가능하다면 텍스처 주소, 피치, 너비 및 기타 (하드웨어 종속) 메모리 레이아웃 정보를 검색하고 다른 시스템에서 더미 텍스트를 생성하고 검색된 데이터를 방금 생성 된 텍스처 객체로 푸시 할 수 있어야합니다. . 이건 불가능 해

분명히, 이것은 Descend 하드웨어에서는 작동하지 않으며, 그렇다면 매우 휴대가되지 않습니다.

데이터를 호스트 메모리로 다운로드하여 장치 메모리에 다시 업로드하지 않으면 가능하지 않다고 생각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top