我在计算内核中有一个存储一系列值的数组(现在只有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
它会起作用。
我觉得我错过了一些非常明显的东西,任何帮助都会受到赞赏。
答案 0 :(得分:1)
Metal不支持可变长度数组。由于数组中的条目数有一个小上限,因此可以声明该大小的数组。使用缓冲区更灵活,但需要您从设备内存中读取。