【问题标题】:How do you get the output of a HLSL computation?如何获得 HLSL 计算的输出?
【发布时间】:2011-06-13 18:59:01
【问题描述】:

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

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

谢谢...


编辑

Liortal 的回答总结

要使用渲染目标,请创建一个 具有宽度的 RenderTarget2D 对象, 高度,以及您喜欢的其他选项。 然后打电话 GraphicsDevice.SetRenderTarget 使 您的渲染目标当前渲染 目标。从此时起,任何平局 您拨打的电话将吸引您的 渲染目标。当你完成 使用渲染目标,调用 GraphicsDevice.SetRenderTarget 到一个 新的渲染目标(或 null 后台缓冲区)。然后你可以随时 调用 RenderTarget2D.GetTexture 获取 渲染目标的内容 进一步处理。

【问题讨论】:

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


    【解决方案1】:

    在此处阅读有关渲染目标以及如何使用它们的更多信息: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

    【讨论】:

    • 好东西,正是我需要的。谢谢。
    【解决方案2】:

    RenderTarget's 是你在这里所追求的。设置RenderTarget (graphicsDevice.SetRenderTarget(myRenderTarget);),绘制场景,然后使用SaveAsJpegSaveAsPng 方法保存输出。

    这是 RenderTarget 文档的 XNA 4 版本。

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

    BmpWriter

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

    【讨论】:

      猜你喜欢
      • 2020-07-30
      • 1970-01-01
      • 2020-09-20
      • 2012-06-13
      • 1970-01-01
      • 2022-11-22
      • 2011-08-20
      • 2010-11-26
      • 2021-12-15
      相关资源
      最近更新 更多