我正在使用一个具有类似OpenGL语法的库。当使用函数将数据传递给指针时,它有时会引入第一个单元格无关的数字。
int *rIndices = (int*)malloc(icount * 500* sizeof(int));
giGetIndexedMesh(&vcount, &icount, rIndices);
for (int j = 0; j < icount; j += 3)
{
printf("%d %d %d\n", rIndices[j], rIndices[j + 1], rIndices[j + 2]);
}
输出结果是:
-1107141503 1047065916 1058222111
- 1118597697 -1083120598 1041096918
-1118541674 -1082575688 1040872831
-1129197583 -1082576454 1041095778
170 190 135
100 174 172
116 175 184
176 191 178
177 176 178
这不会永远发生。有没有人遇到类似的问题?
PS数字应该像第5行和之后。 提前谢谢。
答案 0 :(得分:0)
快速查看documentation后,您应该调用函数giGetIndexedMesh
两次。首先,通过将最后一个参数设置为NULL来检索所需的大小(vcount
和icount
)。第二次检索指数。
在您的代码段中,您使用旧值icount
分配数组。所需的值稍后确定,但您必须在之前确定:
GIuint vcount, icount;
giGetIndexedMesh(&vcount, &icount, NULL);
GIunit *indices = malloc (...);
giGetIndexedMesh(&vcount, &icount, indices);
我没有找到有关阵列布局的足够信息。因此,我没有完成malloc
电话。您还应该检查malloc
和giGetIndexedMesh
的返回值。