2015-09-26 153 views
0

我是OpenGL的新手,我讀glutWireCube繪製一個線立方體。現在,當我運行我的代碼時,它並沒有出現,我想知道它在做什麼?它是繪製一個立方體還是我的代碼出錯了?爲什麼glutWireCube()不顯示我的線立方體?

#include<GL/glut.h> 
    GLdouble cubeSize= 10.0; 
    //FUNCTIONS DECLARATIONS - PROTOTYPES 
    void init(void); 
    void display(void); 

int main(int argc, char ** argv){ 
glutInit(&argc,argv); 
glutInitDisplayMode(GLUT_SINGLE |GLUT_RGBA); 
glutInitWindowPosition(100,100); 
glutInitWindowSize(500,500); 
glutCreateWindow("Wire Cube"); 
init(); 
glutDisplayFunc(display); 

glutMainLoop(); 
} 

//FUNCTIONS IMPLEMENTAION - DEFINITION 

void init(void){ 
    glClearColor(0.0,0.0,1.0,0.0); 
    glClear(GL_COLOR_BUFFER_BIT); 
    } 

void display(void){ 
    glBegin(GL_POLYGON); 
    glutWireCube(5.0); 
    glEnd(); 
    glFlush(); 
    } 

回答

2

調用glutWireCube是不是一個glBegin/glEnd塊內允許的。在那裏只能使用glVertex指定頂點,並且可以使用所有功能來設置某些頂點屬性(如glNormal,glColor,...)的當前值。

glutWireCube如何不指定內部工作。它可能會使用即時模式,但在這種情況下,它將自己執行呼叫glBegin/glEnd

概念上,試圖將一個立方體放入GL_POLYGON也不起作用。 GL_POLYGON用於繪製一個單個,平板,多邊形,並且完全不可能將整個立方體繪製爲一個多邊形。

此外,您不設置任何GL_MODELVIEWGL_PROJECTION矩陣。這意味着你直接在剪輯空間中繪製,而尺寸爲5的glutWireCube將繪製一個完全位於視錐之外的立方體,所以你什麼都看不到。

+0

那麼,一個很好的解釋,你已經觸及了讓我感到困惑的概念。有一件事:是否必須設置GL_MODEVIEW和GL_PROJECTION矩陣才能正確繪製立方體? – JWizard