我目前正在尝试使用随 .net 3.5 sp1 引入的 PixelShaders 来提高图像处理性能。一切都快得多,但直到我才将效果应用于我的 wpf 表单中的某些元素,我实际上想要避免。
我们有很多图像处理功能,我想用像素着色器逐个替换其他功能以获得一些性能。 有没有办法将这样的像素着色器应用于 ImageSource 而无需显示它?
最佳答案
在 C++/DirectX 中通常做的是:
准备(完成一次)
- 使用 CreateRenderTarget 创建渲染目标
- 使用 CreateOffscreenPlainSurface 创建离屏表面
- 使用 SetRenderTarget 设置渲染目标表面
- 创建所需的任何其他输入资源(纹理、顶点缓冲区...)
渲染(多次完成)
- 根据需要更新输入资源(纹理、缓冲区)
- 渲染
- 通过GetRenderTarget将渲染目标的内容复制到离屏表面
- 锁定屏幕外表面并在 CPU 上读取其内容
关于c# - 在离屏位图上应用像素着色器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/295337/