我正在尝试将数据写入hlsl着色器中的缓冲区。我知道在opengl中你需要ssbo,但是在direct11中是否有相应的缓冲区类型?(我是新手)。
P.S。我使用的是monogame,因此最新的着色器模型可用3.0。
谢谢!
答案 0 :(得分:1)
Shader Model 3对应于DirectX 9架构。该架构如下所示:
http://docs.sencha.com/extjs/6.0.2/classic/Ext.layout.container.Border.html
如您所见,像素着色器只有一个输出。此输出可以是颜色或深度值,并将呈现给渲染目标。所以,在DX9中没有办法。
在DX10(SM 4)中,管道如下所示:
https://msdn.microsoft.com/en-us/library/windows/desktop/bb219679(v=vs.85).aspx
同样,像素着色器的输出是颜色和深度。在DX10中也没办法。
最后,DirectX 11(SM 5):
https://msdn.microsoft.com/en-us/library/windows/desktop/bb205123(v=vs.85).aspx
现在有一种从Pixel Shader到Memory Resources的方法。您需要的缓冲区类型是https://msdn.microsoft.com/en-us/library/windows/desktop/ff476882(v=vs.85).aspx。