2013-03-25 31 views
0

我正在研究集成WPF和DirectX的應用程序。我的目標是讓我使用一個共享表面:與計算着色器和Direct2D進行互操作?

  1. 加載初始圖像數據。
  2. 運行DirectX 11計算着色器來執行一些圖像處理。
  3. 用Direct2D繪製頂部。
  4. 在我的WPF應用程序中顯示結果。

我覺得我有1,3和4想通,但2是讓我頭痛。我的基本問題歸結爲:我認爲WPF和Direct2D互操作的共享表面格式必須爲B8G8R8A8_UNorm,但我無法在該類型的紋理上爲我的計算着色器創建無序訪問視圖。

我能做些什麼來使計算着色器在這種情況下工作?我錯過了創建無人機的一些棘手方法嗎?我是否需要重構我的應用程序以便以某種方式使用多個紋理?

回答

0

這是不可能的,因爲這些DirectX功能和WPF互操作(使用D3D9Image)的格式支持有限。

實現所有這些功能之間互操作的一種方法是完成R8G8B8A8_UNorm中的幾乎所有內容,然後在最後使用Direct2D將結果寫入用於與WPF互操作的B8G8R8A8_UNorm呈現器目標。 Direct2D可以將RGB結果寫入BGR目標,因此非常簡單。