DirectX11:将数据从ComputeShader传递给VertexShader?

tes*_*ino 6 directx directx-11 slimdx compute-shader vertex-shader

是否可以将滤镜应用于要使用Compute Shader渲染的几何数据,然后将结果用作顶点着色器中的输入缓冲区?这样可以省去回读数据的麻烦(和时间).

任何帮助深表感谢.

Str*_*ger 3

是的,一点没错。首先,您使用、 和使用标志以及关联的 UAV 和 SRV创建两个相同ID3D11Buffer的结构。BIND_VERTEX_BUFFERBIND_SHADER_RESOURCEBIND_UNORDERED_ACCESS

第一步是将过滤器应用于输入源缓冲区,并在计算过程中写入目标缓冲区。

然后在绘制过程中,您只需将目标缓冲区绑定到舞台即可IA。如果您需要累积顶点上的计算,您可以做一些乒乓球(我假设过滤器指的是函数映射,指的是函数式编程术语)。