direct11将数据写入像素着色器中的缓冲区? (比如ssbo in open)

时间:2016-09-09 05:36:44

标签: directx monogame hlsl

我正在尝试将数据写入hlsl着色器中的缓冲区。我知道在opengl中你需要ssbo,但是在direct11中是否有相应的缓冲区类型?(我是新手)。

P.S。我使用的是monogame,因此最新的着色器模型可用3.0。

谢谢!

1 个答案:

答案 0 :(得分:1)

Shader Model 3对应于DirectX 9架构。该架构如下所示:

http://docs.sencha.com/extjs/6.0.2/classic/Ext.layout.container.Border.html

(资料来源:DX9 Pipeline

如您所见,像素着色器只有一个输出。此输出可以是颜色或深度值,并将呈现给渲染目标。所以,在DX9中没有办法。

在DX10(SM 4)中,管道如下所示:

https://msdn.microsoft.com/en-us/library/windows/desktop/bb219679(v=vs.85).aspx

来源:DX10 pipeline

同样,像素着色器的输出是颜色和深度。在DX10中也没办法。

最后,DirectX 11(SM 5):

https://msdn.microsoft.com/en-us/library/windows/desktop/bb205123(v=vs.85).aspx

来源:DX11 pipeline

现在有一种从Pixel Shader到Memory Resources的方法。您需要的缓冲区类型是https://msdn.microsoft.com/en-us/library/windows/desktop/ff476882(v=vs.85).aspx