0
我现在正在脑海里结一个关于如何正确初始化GLFloats的一个数组,逐行。 据我所知,一个阵列可以这样写:用C++初始化一个GLfloats的多维数组
int a[2][2] = {{1,2},{3,4}}
在我的情况,我有数组
GLfloat targetVertices[10][72];
为立方体的六个面的顶点(万个立方,准确地说)。立方坐标存储在
float targetX[10], targetY[10], targetZ[10];
数组中。我想初始化它是这样的:
for(iii = 0; iii <= 9; iii++) {
targetVertices[iii] = { /*Side 1*/
targetX[iii]-1, targetY[iii]-1, targetZ[iii]-1,
targetX[iii]-1, targetY[iii]-1, targetZ[iii]+1,
targetX[iii]-1, targetY[iii]+1, targetZ[iii]+1,
targetX[iii]-1, targetY[iii]+1, targetZ[iii]-1,
/*Side 2*/
targetX[iii]+1, targetY[iii]-1, targetZ[iii]-1,
targetX[iii]+1, targetY[iii]-1, targetZ[iii]+1,
targetX[iii]+1, targetY[iii]+1, targetZ[iii]+1,
targetX[iii]+1, targetY[iii]+1, targetZ[iii]-1,
/*Side 3*/
targetX[iii]-1, targetY[iii]-1, targetZ[iii]-1,
targetX[iii]-1, targetY[iii]-1, targetZ[iii]+1,
targetX[iii]+1, targetY[iii]-1, targetZ[iii]+1,
targetX[iii]+1, targetY[iii]-1, targetZ[iii]-1,
/*Side 4*/
targetX[iii]-1, targetY[iii]+1, targetZ[iii]-1,
targetX[iii]-1, targetY[iii]+1, targetZ[iii]+1,
targetX[iii]+1, targetY[iii]+1, targetZ[iii]+1,
targetX[iii]+1, targetY[iii]+1, targetZ[iii]-1,
/*Side 5*/
targetX[iii]-1, targetY[iii]-1, targetZ[iii]-1,
targetX[iii]-1, targetY[iii]+1, targetZ[iii]-1,
targetX[iii]+1, targetY[iii]+1, targetZ[iii]-1,
targetX[iii]+1, targetY[iii]-1, targetZ[iii]-1,
/*Side 6*/
targetX[iii]-1, targetY[iii]-1, targetZ[iii]+1,
targetX[iii]-1, targetY[iii]+1, targetZ[iii]+1,
targetX[iii]+1, targetY[iii]+1, targetZ[iii]+1,
targetX[iii]+1, targetY[iii]-1, targetZ[iii]+1
};
}
不幸的是,我总是告诉关于第一个波浪支架语法错误(C2059和C2143,但那些没有任何意义,我在那里) 。 我希望我的问题很清楚,有人可以帮助我。我还没有在这个或任何其他网站上发现任何类似于我的问题。
在此先感谢!
非常感谢,我会尝试并实施您的解决方案。但是,出于理解的目的,为什么我不能简单地将数据逐行分配给我的数组?它适用于char数组(至少在ANSI-C中)。此外,我可能误解了,因为它本身不是一个初始化,而是一个赋值(我预先在两个嵌套for循环中初始化为全零)。它可能通过使用“新”关键字工作?如在写GLfloat * targetVertices;在我的头文件和构造函数中targetVertices = new GLfloat [] [];或者其他的东西? –
您的语法问题是通过说targetVertices [iii]您指的是数组的iiith索引,而不是整列。请参阅2D数组存储为1D数组,但为简单访问提供[] []。您可以将它们称为单维或二维。如果您已经分配了10x72阵列,则不需要“新”。 –