使用计算着色器,多个交换链延迟着色?

时间:2013-02-15 02:46:08

标签: directx directx-11 compute-shader deferred-shading

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

1 个答案:

答案 0 :(得分:1)

编辑:我需要补充一点,你会得到一些状态警告这样做,所以要小心使用。

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