2012-06-13 38 views
5

Khi tôi vẽ một khối lập phương với mã nàyhành vi Odd OpenGL khi vẽ một khối

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

tôi nhận được một bản vẽ cude lẻ:

img1

img2

Ngay cả khi không có gluLookAt() tôi vẫn kết thúc với một bản vẽ kỳ lạ.

Điều kỳ lạ là tôi đã sử dụng cùng một mã chính xác trong dự án OpenGL python và không gặp vấn đề gì với nó. Vì vậy, nó có vẻ là một lỗi C?

Nó cũng có vẻ như 2 quad đầu tiên (màu xanh lá cây và màu cam) không được rút ra ở tất cả.

+0

Chỉ cần giải quyết vấn đề của riêng tôi bằng cách thêm: glEnable (GL_DEPTH_TEST); vào mã của tôi. –

+0

Tôi muốn, nhưng tôi cần thêm đại diện để làm điều đó. –

Trả lời

3

Chỉ cần giải quyết vấn đề của riêng tôi bằng cách thêm:

glEnable(GL_DEPTH_TEST); 

để mã của tôi.

+0

Nó cũng làm việc cho tôi, cảm ơn vì điều này: D – Giovani

Các vấn đề liên quan