你如何获得HLSL计算的输出?

时间:2011-06-13 18:59:01

标签: c# .net image-processing xna hlsl

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

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


    修改

    来自Liortal答案的摘要

      

    要使用渲染目标,请创建一个   RenderTarget2D对象的宽度,   高度,以及您喜欢的其他选项。   然后打电话   GraphicsDevice.SetRenderTarget来制作   您的渲染目标是当前渲染   目标。从这一点开始,任何Draw   你做的电话会吸引你的电话   渲染目标。当你完成   使用渲染目标,调用   GraphicsDevice.SetRenderTarget到   新的渲染目标(或者为null   后缓冲区)。然后随时都可以   调用RenderTarget2D.GetTexture来获取   渲染目标的内容   进一步处理。

2 个答案:

答案 0 :(得分:3)

详细了解渲染目标以及如何在此处使用它们: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

答案 1 :(得分:2)

RenderTarget就是你在这里的样子。设置RenderTargetgraphicsDevice.SetRenderTarget(myRenderTarget);),绘制场景,然后使用SaveAsJpegSaveAsPng方法保存输出。

以下是RenderTarget文档的XNA 4版本。

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

BmpWriter

此链接包含您需要的源代码(如上所述)。