DirectX Compute Shaders是否支持共享内存中的2D阵列?

时间:2013-04-16 20:18:56

标签: directx compute-shader directcompute

我想在DirectX Compute Shader中使用groupshared内存来减少全局内存带宽,并希望提高性能。我的输入数据是Texture2D,我可以使用2D索引来访问它,如下所示:

Input[threadID.xy]

我想有一个共享内存的2D数组来缓存部分输入数据,所以我尝试了显而易见的事实:

groupshared float SharedInput[32, 32];

它不会编译。错误消息显示为syntax error: unexpected token ','

有没有办法拥有共享内存的2D数组?如果没有,那么处理存储在一维共享存储器阵列中的2D数据的好方法是什么?

1 个答案:

答案 0 :(得分:2)

groupshared数组无法使用多维索引编制索引。您可以获得的最接近的是一个数组数组,其中每个维度都是独立索引的。

groupshared float SharedInput[32][32];

它不如多维索引那么好,但至少你不必手动计算线性索引。