2012-10-09 39 views
2

我試圖繪製2個不同顏色的方塊,我的問題是我無法讓glTranslatef將我的第二個方塊移動到右側,第二個方塊剛剛畫出首先。glTranslatef在glBegin中不起作用glEnd

void display(void) 
{ 
    glClear(GL_COLOR_BUFFER_BIT); 
    glMatrixMode(GL_MODELVIEW); 
    glLoadIdentity(); 

    glPointSize(10); 

    glBegin(GL_QUADS); 

     glColor3f(0.0,1.0,0.0); 
     drawSquare(); 

     glTranslatef(10,0,0); 

     glColor3f(1.0,0.0,0.0); 
     drawSquare(); 

    glEnd();  

    glFlush(); // Process all OpenGL routines 
} 

void drawSquare() 
{ 
    glVertex3f(0,0,0); 
    glVertex3f(10,0,0); 
    glVertex3f(10,10,0); 
    glVertex3f(0,10,0); 
} 

回答

8

您不能glBegin/glEnd塊內翻譯,你必須把它分解成兩個街區。

我建議您在代碼中使用glGetError(),它會幫助您找到類似的錯誤。

+0

非常感謝,您的回答對我來說非常合適。有什麼建議我會在網上閱讀openGL嗎? – kev670

7

在glBegin和glEnd之間只允許使用OpenGL命令的某個子集。所以,當你在這兩個調用之間調用glTranslate時,它會被忽略。

從顯示中刪除glBegin和glEnd,並放在drawSquare - 這應該工作。

+0

不僅會被忽略,它實際上會觸發GL_INVALID_OPERATION錯誤標誌。 – datenwolf