2011-01-29 80 views
4

我正在寫一個利用D3DImage的視頻應用程序。幀來自內存,並以DirectX9本機代碼的紋理形式呈現,最終由D3DImage向WPF GUI展示。我有一些覆蓋頂部,用WPF的繪畫框架(文字,形狀等)創建。到目前爲止,它就像一個魅力。 現在,我想從我的底層原生C++代碼中對合成圖像進行編碼。視頻是640x480 BGR,25 FPS,並且必須在Windows版本低至XP/SP3的舊硬件上同時進行渲染和編碼。WPF-DirectX互操作問題(D3DImage)

問題是,我找不到任何文檔描述WPF和D3DImage之間的組成過程。它們在某種意義上是「混合」的,但這是什麼意思?是否有可能得到WPF的繪圖部分的句柄,甚至是我的本地C++代碼中的合成圖像?

p.s:我也對管理解決方案開放,但到目前爲止還沒有發現很多性能。

回答

2

有一種叫做「CompositionTarget.Rendering」的全局靜態方法。向WPF添加一個事件,每次WPF呈現該方法將在WPF呈現之前調用(但FPS可以改變)。所以剛剛更新了你的renderTarget。 可能有更好的方法,但我不知道它。

備註::對於WindowsXP上的D3DImage,您還可以使用具有可鎖定renderTarget的D3D9設備,而在Vista/7上使用具有不可鎖定renderTarget的D3D9Ex設備。只是一個筆記。