0

再次嗨。我准备在我的 dx11 引擎中添加延迟着色,但我有一个架构问题。我正在考虑首先使用 MRT 渲染 gbuffer,将其传递给计算着色器,调度,然后输出结果。我的问题是,我应该创建两个交换链,一个用于渲染 gbuffer,一个 uav 用于将计算着色器渲染到后台缓冲区并呈现,还是有另一种方法可以做到这一点?我在这里要避免的是必须使用全屏四边形并在其上渲染 cs 的输出。开销太大。提前致谢。

4

1 回答 1

1

编辑:我需要补充一点,您会收到一些状态警告,因此请谨慎使用。

最后,不需要两个交换链。您首先使用 DXGI_USAGE_UNORDERED_ACCESS 标志创建您的后备缓冲区。然后创建一个渲染目标。将场景渲染到该目标,将其作为 Texture2D 传递给计算着色器,并将后缓冲区作为 RWTexture2D 传递给计算着色器。然后只需发送 cs,呈现并完成!你在屏幕上得到了 cs 输出。

于 2013-02-20T16:56:17.257 回答