0
使用C++和OpenGL我使用四邊形,直線和點繪製了一個Cube。我現在試圖讓我的代碼更加密集。爲了實現這一點,我想使用for循環。使用for循環的OpenGL立方體
:double vertices[8][3] = {
{ 1.0f, 1.0f, 1.0f}, //0
{ 1.0f, 1.0f,-1.0f}, //1
{ 1.0f,-1.0f,-1.0f}, //2
{-1.0f,-1.0f,-1.0f}, //3
{-1.0f,-1.0f, 1.0f}, //4
{-1.0f, 1.0f, 1.0f}, //5
{-1.0f, 1.0f,-1.0f}, //6
{ 1.0f,-1.0f, 1.0f} //7
};
目前我的代碼來使用行是
void drawLines(){
glBegin(GL_LINES);
//Front Lines
//Left
glVertex3f(vertices[5][0],vertices[5][1],vertices[5][2]);
glVertex3f(vertices[4][0],vertices[4][1],vertices[4][2]);
//Top
glVertex3f(vertices[5][0],vertices[5][1],vertices[5][2]);
glVertex3f(vertices[0][0],vertices[0][1],vertices[0][2]);
//Bottom
glVertex3f(vertices[4][0],vertices[4][1],vertices[4][2]);
glVertex3f(vertices[7][0],vertices[7][1],vertices[7][2]);
//Right
glVertex3f(vertices[7][0],vertices[7][1],vertices[7][2]);
glVertex3f(vertices[0][0],vertices[0][1],vertices[0][2]);
//Middle Lines
//Top Left
glVertex3f(vertices[6][0],vertices[6][1],vertices[6][2]);
glVertex3f(vertices[5][0],vertices[5][1],vertices[5][2]);
//Top Right
glVertex3f(vertices[1][0],vertices[1][1],vertices[1][2]);
glVertex3f(vertices[0][0],vertices[0][1],vertices[0][2]);
//Bottom Left
glVertex3f(vertices[3][0],vertices[3][1],vertices[3][2]);
glVertex3f(vertices[4][0],vertices[4][1],vertices[4][2]);
//Bottom Right
glVertex3f(vertices[2][0],vertices[2][1],vertices[2][2]);
glVertex3f(vertices[7][0],vertices[7][1],vertices[7][2]);
//Back Lines
//Left
glVertex3f(vertices[6][0],vertices[6][1],vertices[6][2]);
glVertex3f(vertices[3][0],vertices[3][1],vertices[3][2]);
//Top
glVertex3f(vertices[6][0],vertices[6][1],vertices[6][2]);
glVertex3f(vertices[1][0],vertices[1][1],vertices[1][2]);
//Bottom
glVertex3f(vertices[3][0],vertices[3][1],vertices[3][2]);
glVertex3f(vertices[2][0],vertices[2][1],vertices[2][2]);
//Right
glVertex3f(vertices[2][0],vertices[2][1],vertices[2][2]);
glVertex3f(vertices[1][0],vertices[1][1],vertices[1][2]);
glEnd(); // Done Drawing Edges
}
這實現了這樣的結果繪製出立方體
在試圖凝結我的代碼我試圖得到相同的結果使用for循環目前我有這個:
glBegin(GL_LINES);
for (int i=0; i<8; i+=1) {
for (int j=0; j<8; j+=1) {
glVertex3f(vertices[i][0],vertices[i][1],vertices[i][2]);
glVertex3f(vertices[j][0],vertices[j][1],vertices[j][2]);
}
}
glEnd();
我的問題是,會有人請能夠給我指導,得到相同的結果,因爲我有我的原代碼?
將線條(頂點對)排列並迭代它會不會更好? – Matso
在您的代碼中,每個頂點都連接到每個頂點(包括它自己)。在線框立方體中,每個頂點連接到3個其他頂點。這不能用一個簡單的for循環來完成,它需要一些額外的指導。 – usr2564301