金属数组索引使用文字工作但使用变量崩溃

Metal array indexing works using literals but crashes using a variable

我在计算内核中有一个数组,用于存储一系列值(目前只有大约 10 个)。我将值分配给数组,如下所示:

int count = uniforms;
int i = 0;
float pointsx[count];
float pointsy[count];
for (i = 0; i < count; i++){
  pointsx[i] = simplex3D(i*2,1,1);
  pointsy[i] = simplex3D(1,i*2,1);
}

然后我继续使用类似的 for 循环迭代这些点。 当我尝试访问任何索引处的数组时,这会在运行时崩溃并报告编译器错误,但是如果我用整数文字替换 i 它会起作用。

我觉得我遗漏了一些非常明显的东西,我们将不胜感激。

Metal 不支持变长数组。由于数组中的条目数有一个小的上限,您可以声明一个该大小的数组。使用缓冲区更灵活,但需要您从设备内存中读取。