2012-07-16 34 views
0

我希望我不會在第一篇文章中犯第一個錯誤。PixelShading in C#

我正在爲一些圖形效果和過濾器編寫庫(例如Sobel或Gauß蒙版)。 由於速度較慢,在CPU上執行此操作時,我使用Shazzam工具編寫了一些着色器。

我的混凝土問題是,我無法在C#中使用此着色器。 在互聯網中,我發現只有建議如何將XHL中的pixelshader作爲效果直接應用於某個元素,該元素不適用於我的應用程序,因爲這會導致無法在一個Image上應用多個着色器, Canny邊緣檢測器。

爲了說明這個問題,一個小的僞代碼,它應該顯示,我期望的方法。

PixelShader somePixelShader = new PixelShader(pixelshader.ps); 
somePixelShader.Input = Bitmap; 
somePixelShader.Height = 200; 
somePixelShader.Width = 800; 

somePixelShader.Execute(); 
Bitmap = somePixelShader.Result; 

正如你所看到的,一切都應該在C#中完成。

也許你可以幫我解決我的問題。

+1

你在建什麼類型的應用程序? WPF? SilverLight的? XNA?我猜這是SL或WPF,因爲你提到了XAML,但仍然有很多可能性...... – 2012-07-16 19:43:49

+0

我正在構建一個C#類庫,但使用Pixel Shader的唯一方法是通過WPF – 2012-07-16 21:34:18

回答

0

您可以使用RenderTargetBitmap將當前效果輸出複製爲位圖,然後將此輸出圖像作爲下一個效果的新輸入提交,然後沖洗,重複。

更新:一個小(無結果)測試後,這是不行的:Can't render pixel shader to RenderTargetBitmap! Please help!

+0

誰我是否可以應用效果本身,基本方式對我來說可能是一種破壞,如果我知道應該使用着色器的人,我會盡可能快地測試和回答 – 2012-07-16 21:37:26

+0

我做了一個測試,它產生了一個空白圖像,請閱讀我上面的更新。 – Aybe 2012-07-18 17:06:53

0

退房these white papers爲一步一步的指導+如何編譯和使用WPF像素着色器的例子或SL。

您可能還想看看WPF像素着色器效果庫here