2012-07-16 39 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