2009-06-25 22 views
10

Estoy tratando de dibujar una serie de rectángulos usando OpenGL pero algunos de los que deben aparecer debajo de un rectángulo aparecen encima de él.Depth Buffer en OpenGL

Para activar la función de la profundidad que estoy usando

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

estoy usando gluLookAt en el comienzo de cada sorteo. Aquí hay una imagen del problema. Los rectángulos azules se posicionan con valores y más altos que los rectángulos verdes.

alt text alt text

Como se puede ver en la imagen superior algunos de los rectángulos verdes aparecen arriba los azules. ¿Alguna idea de por qué sucede esto y qué puedo hacer para solucionarlo? ¿Podría tener algo que ver con el orden en que dibujo los rectángulos?

Respuesta

12

Cuando borra su búfer de color ¿también está limpiando el búfer de profundidad?

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

¿Seguro de que la imagen no es correcto? Algunas de esas casillas verdes realmente
parecen más altas que las azules.

7

¿Ha habilitado el búfer de profundidad en el sistema de ventanas que está utilizando? Por ejemplo, si utiliza exceso, es posible que necesite: glutInitDisplayMode (GLUT_DEPTH | ....);

+0

Estoy usando qt para mi kit de herramientas para ventanas. No estoy al tanto de ninguna función como esa. ¿Sabes si hay uno que debería llamar similar a la función del exceso? – DHamrick

+2

En el objeto 'QGLFormat', debería poder comprobar si el buffer de profundidad está habilitado con los métodos' depth' y 'setDepth'. – ravuya

+1

Gracias. Esa respuesta salvó mi día. – hanno