我正在制作一个游戏,我有一系列花车,可以制作我用opengl放入的3D模型。我想要做的是分离x,y和amp; z坐标并使它们成为一个多维数组。我想这样做,所以我可以调整相对于地形的y位置。我在init函数中放置的for循环如下:
for (int x = 0; x < sizeof(desert_scene_plainVerts); x++) {
if (((x + 3)%3) == 0) {
//x coord
terrainxPos[x/3] = desert_scene_plainVerts[x];
}
else if (((x + 1)%3) == 0) {
//z coord
terrainzPos[(x-2)/3] = desert_scene_plainVerts[x];
}
else{
//y coord
terrainzPos[(x-1)/3] = desert_scene_plainVerts[x];
}
}
我在这一行收到错误:
terrainzPos[(x-1)/3] = desert_scene_plainVerts[x];
错误如下:
Thread 1: EXC_BAD_ACCESS (code=2, address= 0x10 etc.)
有人知道我做错了吗。
答案 0 :(得分:1)
假设您已正确声明terrainxPos[]
,terrainyPos[]
和terrainzPos[]
,那么您的逻辑看起来没问题。如果这些是vector
s,那么请确保resize()
正确。{/ p>
然而,你的循环可能更清晰,更容易推理如下:
for (int x = 0, v = 0; x < sizeof(desert_scene_plainVerts); x += 3, v++) {
terrainxPos[v] = desert_scene_plainVerts[x + 0];
terrainyPos[v] = desert_scene_plainVerts[x + 1];
terrainzPos[v] = desert_scene_plainVerts[x + 2];
}