2011-01-29 5 views
4

D3DImage를 사용하는 비디오 응용 프로그램을 작성하고 있습니다. 프레임은 메모리에 있으며 DirectX9로 네이티브 코드의 텍스쳐로 렌더링되며 마지막으로 D3DImage에 의해 WPF GUI에 노출됩니다. WPF의 페인팅 프레임 워크 (텍스트, 모양 등)로 만든 오버레이를 맨 위에 놓았습니다. 지금까지는 매력처럼 작동합니다. 이제 기본 네이티브 C++ 코드에서 합성 된 이미지를 인코딩하고 싶습니다. 비디오는 640x480 BGR, 25FPS이며 병렬로 렌더링하고 XP/SP3 이하의 Windows 버전이있는 구형 하드웨어에서도 인코딩해야합니다.WPF-DirectX Interop 문제 (D3DImage)

문제는 WPF와 D3DImage 간의 합성 프로세스를 설명하는 문서를 찾을 수 없습니다. 그들은 어떤 의미에서 '혼합'되어 있지만 이것의 의미는 무엇입니까? 그리고 내 네이티브 C++ 코드에서 WPF의 도면 부분 또는 합성 이미지의 핸들을 얻을 수 있습니까?

p.s : 저는 관리 솔루션에도 개방적이지만 지금까지는 실적이별로 없습니다.

답변

2

"CompositionTarget.Rendering"이라는 전역 정적 메서드가 있습니다. WPF에서 이벤트를 추가하면 WPF가 표시되기 전에 WPF가 해당 메서드를 호출 할 때마다 렌더링됩니다 (FPS는 다를 수 있음). 따라서 renderTarget을 적절히 업데이트하십시오. 더 좋은 방법이 있을지 모르지만 나는 그것을 모르고 있습니다.

참고 : WindowsXP의 D3DImage의 경우 잠금 가능한 renderTarget이있는 D3D9 장치를 사용하고 Vista/7의 경우 잠금 해제 가능한 renderTarget이있는 D3D9Ex 장치를 사용합니다. 그냥 메모.