2013-10-16 46 views
4

起初我有一個簡單的白色矩形棱柱這樣的:重繪glQuads - OpenGL的

enter image description here

下面的代碼:

glBegin(GL_QUADS);    

     glColor3f(255,255,255);  
     glVertex3f(0.3, 0, 2.5);//sisi bawah 
     glVertex3f(0.5, 0, 2.5); 
     glVertex3f(0.5, 0, 2.6); 
     glVertex3f(0.3, 0, 2.6); 

     glVertex3f(0.5, 0, 2.6);//sisi kiri 
     glVertex3f(0.3, 0, 2.6); 
     glVertex3f(0.3, 1.5, 2.6); 
     glVertex3f(0.5, 1.5, 2.6); 

     glVertex3f(0.5, 0, 2.5);//sisi depan 
     glVertex3f(0.5, 0, 2.6); 
     glVertex3f(0.5, 1.5, 2.6); 
     glVertex3f(0.5, 1.5, 2.5); 

     glVertex3f(0.3, 0, 2.5);//sisi belakang 
     glVertex3f(0.3, 0, 2.6); 
     glVertex3f(0.3, 1.5, 2.6); 
     glVertex3f(0.3, 1.5, 2.5); 

     glVertex3f(0.3, 1.5, 2.5);//sisi atas 
     glVertex3f(0.5, 1.5, 2.5); 
     glVertex3f(0.5, 1.5, 2.6); 
     glVertex3f(0.3, 1.5, 2.6); 

     glVertex3f(0.5, 0, 2.5);//sisi kanan 
     glVertex3f(0.3, 0, 2.5); 
     glVertex3f(0.3, 1.5, 2.5); 
     glVertex3f(0.5, 1.5, 2.5); 

glEnd(); 

然後,我想提請另一個像這樣的矩形棱鏡:

enter image description here

只需使用glTranslate就可以重新繪製另一個棱鏡,因此我不必手動插入數字?

+3

簡單的答案是「是」 – benjymous

+2

爲什麼你們所有人仍然使用即時模式? – Drop

+0

@Drop是的,我讓人傷心看到人們使用已棄用的功能。 – Vallentin

回答

6

是的,創建一個函數來調用繪製關於其模型座標棱鏡的繪圖命令,drawPrism。然後在代碼中,你可以這樣做:

//draw prism 1 
glPushMatrix(); 
glTranslate(x1, y1, z1); 
drawPrism(); 
glPopMatrix(); 

//draw prism 2 
glPushMatrix(); 
glTranslate(x2, y2, z2); 
drawPrism(); 
glPopMatrix(); 
+0

我不知道應該在glTranslate中的3個參數x1,y1,z1中插入什麼座標。 – noobprogrammer

+0

這取決於你。這些將是世界座標。基本上將它們放置在基於質量中心的世界座標系中。例如,如果我想讓棱鏡以(-10,-5,0)爲中心,那麼這將需要一些調整和玩 – pippin1289

+0

,那麼這對x1,y1和z1分別是一個好的起點 – pippin1289