2012-08-16 86 views
1

是否可以使用DirectX像素着色器爲照片創建圖像效果?我有一個C++應用程序,其中包括一種照片數據庫管理器。它利用GDI +進行圖像處理,我想爲用戶提供一些奇特的圖像效果 - 我希望通過DirectX像素着色器進行處理。我希望實現類似的效果,比如Shazzam工具提供開箱即用的示例庫 - 不幸的是,我使用的是純粹的GDI +而沒有使用WPF。使用DirectX HLSL像素着色器爲照片創建圖像效果

對於在GDI +位圖我認爲以下步驟創建的圖像效果:

1)經由GDI負載圖像+

2)初始化的DirectX,負載/編譯的着色器,轉換GDI +圖像將被用作紋理在DirectX

3)畫出4個頂點中的DirectX和使用照片作爲紋理

4)將像素着色器

5)表面與像素shadered照片

1-4已經解決了保存,但如何實現第5步?

目前我使用下面的代碼片斷收集修改後的照片:

d3dDevice->GetRenderTarget(0, &surface); 

D3DXSaveSurfaceToFile("Test.png", D3DXIFF_PNG, surface, NULL, NULL); 

surface->Release(); 
surface = NULL; 

此代碼不適合我的需要,因爲它抓住了整個現場,不僅紋理(=照片)。我怎樣才能實現像素着色照片紋理恢復其原始大小?我想實現同樣的結果Shazzam工具提供,但沒有WPF ...

預先感謝您!

乾杯!

回答

1

我只需要創建一個屏幕外渲染目標(紋理渲染)用適當的維度和一個保存爲一個表面(像你這樣做的話)。渲染到可見的屏幕空間(聽起來像你現在正在做的那樣)絕對是你最想避免的。如果您想顯示結果,則渲染渲染的紋理。

+0

謝謝!現在就像一個魅力! :) – barnacleboy 2012-08-16 20:37:55