2012-06-13 11 views
5

Kiedy narysować sześcian z tym kodemOdd OpenGL zachowanie podczas rysowania sześcian

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(); 

dostaję dziwne cude rysunek:

img1

i

img2

Nawet bez gluLookAt() wciąż kończę dziwny rysunek.

Najdziwniejsze jest to, że użyłem dokładnie tego samego kodu w projekcie Pythona OpenGL i nie miałem z tym problemu. Więc wydaje się, że jest to błąd C?

Wygląda również na to, że pierwsze 2 quady (zielone i pomarańczowe) nie są w ogóle rysowane.

+0

Właśnie rozwiązałem mój problem, dodając: glEnable (GL_DEPTH_TEST); do mojego kodu. –

+0

Chciałbym, ale potrzebuję więcej rep, aby to zrobić. –

Odpowiedz

3

Wystarczy rozwiązać własne problemy, dodając:

glEnable(GL_DEPTH_TEST); 

do mojego kodu.

+0

To też działa dla mnie, dzięki za to: D – Giovani

Powiązane problemy