2009-06-25 13 views
10

Ich versuche, eine Reihe von Rechtecken mit OpenGL zu zeichnen, aber einige der, die unterhalb eines Rechtecks ​​erscheinen sollten, erscheinen darüber.Tiefenpuffer in OpenGL

Um die Tiefenfunktion I

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

I gluLookAt am Anfang von jeder Ziehung verwende verwende zu ermöglichen. Hier ist ein Bild des Problems. Die blauen Rechtecke sind mit höheren y-Werten als die grünen Rechtecke positioniert.

alt text alt text

Wie Sie im Bild oben einige der grünen Rechtecke erscheinen über die blauen sehen können. Irgendeine Idee, warum das passiert und was ich tun kann, um es zu beheben? Könnte es etwas mit der Reihenfolge zu tun haben, dass ich die Rechtecke zeichne?

Antwort

12

Wenn Sie Ihren Farbpuffer löschen, löschen Sie auch den Tiefenpuffer?

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

Sind Sie sicher, dass das Bild nicht korrekt ist? Einige dieser grünen Quadrate tatsächlich
schauen höher als die blauen.

7

Haben Sie den Tiefenpuffer in welchem ​​Fenstersystem auch immer aktiviert? Zum Beispiel können Sie Glut verwenden: glutInitDisplayMode (GLUT_DEPTH | ....);

+0

Ich benutze Qt für meine Windowing Toolkit. Mir ist keine solche Funktion bekannt. Weißt du, ob es einen gibt, den ich rufen sollte, der der Funktion von Überschwem- mung ähnlich ist? – DHamrick

+2

Im 'QGLFormat'-Objekt sollten Sie überprüfen können, ob der Tiefenpuffer mit den 'depth'- und' setDepth'-Methoden aktiviert ist. – ravuya

+1

Danke. Diese Antwort hat meinen Tag gerettet. – hanno

Verwandte Themen