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陣列,則不需要「新」。 –