【发布时间】:2014-10-31 01:27:56
【问题描述】:
我有一个包含几百万个元素的 D3D11 缓冲区,它应该以 R8G8B8A8_UNorm 格式保存数据。
所需的行为如下:一个着色器计算vec4 并以随机访问模式将其写入缓冲区。在下一轮中,另一个着色器以随机访问模式读取数据并进一步处理它们。
我最好的猜测是使用R8G8B8A8_UNorm 格式创建一个UnorderedAccessView。但是如何在 HLSL 中声明 RWBuffer<?>,以及如何写入和读取呢?是否需要将其声明为RWBuffer<uint> 并手动从vec4 打包到uint?
在 OpenGL 中,我会创建一个缓冲区和一个缓冲区纹理。然后我可以在着色器中以rgba8 格式声明imageBuffer,使用imageLoad 和imageStore 访问它,硬件为我完成所有转换。这在 D3D11 中可能吗?
【问题讨论】:
标签: directx directx-11 hlsl