0

我希望我的第一篇文章不会犯第一个错误。

我正在为几个图形效果和过滤器(例如 Sobel 或 Gauß mask)编写一个库。由于速度低,在 CPU 上执行此操作,我使用 Shazzam 工具编写了一些着色器。

我的具体问题是,我无法在 C# 中使用这个着色器。在互联网上,我只找到了如何将像素着色器作为 XAML 中的效果直接应用于元素的建议,这对我的应用程序不可用,因为这使得无法在一个图像上应用多个着色器,这是必需的,例如Canny 边缘检测器。

为了说明这个问题,一个小伪代码应该显示,我对该方法的期望。

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

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

如您所见,一切都应该在 C# 中完成。

也许你可以帮我解决我的问题。

4

2 回答 2

0

您可以使用RenderTargetBitmap将当前效果输出复制为位图,然后将此输出的图像作为下一个效果的新输入提交,冲洗,重复。

更新:经过小型(且不确定)测试后,这将不起作用:无法将像素着色器渲染到 RenderTargetBitmap!请帮忙!

于 2012-07-16T19:39:36.720 回答
0

查看这些白皮书,了解有关如何在 WPF 或 SL 中编译和使用像素着色器的分步说明和示例。

您可能还想在此处查看 WPF 像素着色器效果库。

于 2012-07-16T21:41:23.743 回答