2012-06-13 11 views
5

Quando disegno un cubo con questo codicestrano comportamento OpenGL quando si disegna un cubo

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
glLoadIdentity(); 
gluLookAt(
x, y, z, 
x+xp, y+yp, z+zp, 
0.0f, 1.0f, 0.0f); 
glBegin(GL_QUADS);    

glColor3f(0.0f,1.0f,0.0f);    
glVertex3f(1.0f, 1.0f,-1.0f);   
glVertex3f(-1.0f, 1.0f,-1.0f);  
glVertex3f(-1.0f, 1.0f, 1.0f);  
glVertex3f(1.0f, 1.0f, 1.0f);   

glColor3f(1.0f,0.5,0.0f);   
glVertex3f(1.0f,-1.0f, 1.0f);   
glVertex3f(-1.0f,-1.0f, 1.0f);   
glVertex3f(-1.0f,-1.0f,-1.0f);  
glVertex3f(1.0f,-1.0f,-1.0f);   

glColor3f(1.0f,0.0f,0.0f);    
glVertex3f(1.0f, 1.0f, 1.0f);   
glVertex3f(-1.0f, 1.0f, 1.0f);  
glVertex3f(-1.0f,-1.0f, 1.0f);   
glVertex3f(1.0f,-1.0f, 1.0f);   

glColor3f(1.0f,1.0f,0.0f);    
glVertex3f(1.0f,-1.0f,-1.0f);   
glVertex3f(-1.0f,-1.0f,-1.0f);   
glVertex3f(-1.0f, 1.0f,-1.0f);   
glVertex3f(1.0f, 1.0f,-1.0f);   

glColor3f(0.0f,0.0f,1.0f);    
glVertex3f(-1.0f, 1.0f, 1.0f);  
glVertex3f(-1.0f, 1.0f,-1.0f);   
glVertex3f(-1.0f,-1.0f,-1.0f);  
glVertex3f(-1.0f,-1.0f, 1.0f);   

glColor3f(1.0f,0.0f,1.0f);    
glVertex3f(1.0f, 1.0f,-1.0f);   
glVertex3f(1.0f, 1.0f, 1.0f);   
glVertex3f(1.0f,-1.0f, 1.0f);  
glVertex3f(1.0f,-1.0f,-1.0f); 
glEnd(); 

ottengo uno strano disegno Cude:

img1

e

img2

Anche senza gluLookAt() continuo a finire un disegno strano.

La cosa strana è che ho usato lo stesso identico codice in un progetto OpenGL Python e non ho avuto problemi con esso. Quindi sembra essere un errore C?

Sembra anche che i primi 2 quad (verde e arancione) non vengano disegnati affatto.

+0

Ho appena risolto il mio problema aggiungendo: glEnable (GL_DEPTH_TEST); al mio codice. –

+0

Lo farei, ma ho bisogno di più rappresentanti per farlo. –

risposta

3

appena risolto il mio problema aggiungendo:

glEnable(GL_DEPTH_TEST); 

al mio codice.

+0

Funziona anche per me, grazie per questo: D – Giovani