如何获得HLSL计算的输出
本文关键字:输出 计算 HLSL 何获得 | 更新日期: 2023-09-27 17:58:58
我基本上想使用.NET将GPU结果屏幕捕获到位图文件中。我可能会使用XNA,我的工作流程类似于:
- 使用自定义输入数据调用效果
- 让效果按像素运行过程
- 从效果中获得结果(??)
- 将结果另存为位图
谢谢。。。
编辑
Liortal的回答摘要:
若要使用渲染目标,请创建RenderTarget2D对象的宽度,身高和其他你喜欢的选项。然后打电话GraphicsDevice.SetRenderTarget您的渲染目标为当前渲染目标从这一点开始,任何Draw你打的电话会吸引你渲染目标。当你完成对于渲染目标,调用GraphicsDevice.SetRenderTarget到新的渲染目标(或后缓冲器)。那么在任何时候你都可以调用RenderTarget2D.GetTexture获取的渲染目标的内容进一步处理。
在此处阅读有关渲染目标以及如何使用它们的更多信息:http://msdn.microsoft.com/en-us/library/bb976073.aspx
请注意,链接指的是XNA 3.1,这里有一篇由Shawn Hargreaves撰写的关于XNA 4中这一领域的变化的帖子:http://blogs.msdn.com/b/shawnhar/archive/2010/03/26/rendertarget-changes-in-xna-game-studio-4-0.aspx
RenderTarget
就是您想要的。设置RenderTarget
(graphicsDevice.SetRenderTarget(myRenderTarget);
),绘制场景,然后使用SaveAsJpeg
或SaveAsPng
方法保存输出。
这是RenderTarget文档的XNA 4版本。
然而,人们已经提到了内存泄漏,所以我会使用这个替代方案:
BmpWriter
这个链接有您需要的源代码(正如我上面提到的)。