金属数组索引使用文字工作但使用变量崩溃
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 不支持变长数组。由于数组中的条目数有一个小的上限,您可以声明一个该大小的数组。使用缓冲区更灵活,但需要您从设备内存中读取。
我在计算内核中有一个数组,用于存储一系列值(目前只有大约 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 不支持变长数组。由于数组中的条目数有一个小的上限,您可以声明一个该大小的数组。使用缓冲区更灵活,但需要您从设备内存中读取。