2009-06-25 41 views
10

Tôi đang cố gắng vẽ một loạt hình chữ nhật bằng cách sử dụng OpenGL nhưng một số trong những hình chữ nhật sẽ xuất hiện bên dưới hình chữ nhật xuất hiện phía trên nó.Bộ đệm sâu trong OpenGL

Để kích hoạt chức năng sâu Tôi đang sử dụng

glClearDepth(1.0f); 
glDepthFunc(GL_LESS); 
glEnable(GL_DEPTH_TEST); 

Tôi đang sử dụng gluLookAt vào lúc bắt đầu của mỗi bốc thăm. Đây là một hình ảnh của vấn đề. Các hình chữ nhật màu xanh được định vị với các giá trị y cao hơn các hình chữ nhật màu xanh lục.

alt text alt text

Như bạn có thể nhìn thấy trong hình trên một số các hình chữ nhật màu xanh lá cây xuất hiện trên những người màu xanh. Bất kỳ ý tưởng tại sao điều này đang xảy ra và những gì tôi có thể làm để sửa chữa nó? Nó có thể liên quan đến thứ tự mà tôi vẽ hình chữ nhật không?

Trả lời

12

Khi bạn xóa bộ đệm màu là bạn cũng xóa bộ đệm độ sâu?

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

Bạn có chắc chắn hình ảnh không chính xác? Một số ô vuông màu xanh lá cây thực sự là
trông cao hơn màu xanh lam.

7

Bạn đã bật bộ đệm độ sâu trong bất kỳ hệ thống cửa sổ nào bạn đang sử dụng phải không? Ví dụ, bằng cách sử dụng glut bạn có thể cần phải: glutInitDisplayMode (GLUT_DEPTH | ....);

+0

Tôi đang sử dụng qt cho bộ công cụ cửa sổ của mình. Tôi không biết về bất kỳ chức năng nào như thế. Bạn có biết nếu có một tôi nên gọi simmilar để chức năng của glut. – DHamrick

+2

Trong đối tượng 'QGLFormat', bạn có thể kiểm tra xem bộ đệm độ sâu có được kích hoạt với các phương thức' depth' và 'setDepth' hay không. – ravuya

+1

Cảm ơn. Câu trả lời đó đã cứu tôi trong ngày. – hanno

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