如何获得HLSL计算的输出

本文关键字:输出 计算 HLSL 何获得 | 更新日期: 2023-09-27 17:58:58

我基本上想使用.NET将GPU结果屏幕捕获到位图文件中。我可能会使用XNA,我的工作流程类似于:

  1. 使用自定义输入数据调用效果
  2. 让效果按像素运行过程
  3. 从效果中获得结果(??)
  4. 将结果另存为位图

谢谢。。。


编辑

Liortal的回答摘要

若要使用渲染目标,请创建RenderTarget2D对象的宽度,身高和其他你喜欢的选项。然后打电话GraphicsDevice.SetRenderTarget您的渲染目标为当前渲染目标从这一点开始,任何Draw你打的电话会吸引你渲染目标。当你完成对于渲染目标,调用GraphicsDevice.SetRenderTarget到新的渲染目标(或后缓冲器)。那么在任何时候你都可以调用RenderTarget2D.GetTexture获取的渲染目标的内容进一步处理。

如何获得HLSL计算的输出

在此处阅读有关渲染目标以及如何使用它们的更多信息: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就是您想要的。设置RenderTargetgraphicsDevice.SetRenderTarget(myRenderTarget);),绘制场景,然后使用SaveAsJpegSaveAsPng方法保存输出。

这是RenderTarget文档的XNA 4版本。

然而,人们已经提到了内存泄漏,所以我会使用这个替代方案:

BmpWriter

这个链接有您需要的源代码(正如我上面提到的)。