Hintergrund-Objekt gezeichnet wird, vor dem Vordergrund-Objekt in OpenGL?

Für Testzwecke nehmen wir an, ich habe ziehe 2 Teekannen mit glutSolidTeapot() wie diese:

glColor3f(1.0f, 0.0f, 0.0f); //Red teapot
glutWireTeapot(1.0f);

glColor3f(0.0f, 1.0f, 0.0f); //Green teapot
glTranslatef(0.0f, 0.0f, 3.0f);
glutWireTeapot(1.0f);

Die Kamera zunächst an (x,y,z) = (0.0f, 0.0f, 5.0f) und ich freue mich auf z = -1 (das ist Kamera-position #1). Ich bin sicher, Sie verstehen, dass die grüne Teekanne ist das nächstgelegene Objekt an der Kamera und die rote ist dahinter. Das problem ist, dass die rote gezogen wird, wie es vor den grünen, die nicht richtig Aussehen:

Beispiel: http://i.stack.imgur.com/8WoEn.png

Nun, wenn ich die Kamera bewegen zu (x,y,z) = (0.0f, 0.0f, -5.0f) und schauen z = 1 (dies ist die position der Kamera #2), will ich sehen, die rote Teekanne vor dem grün ein, dieses Verhalten ist normal. Das rot ist jetzt das Objekt der Kamera am nächsten und die grünen hinter den roten. Alles ist in Ordnung.

Beispiel: http://i.stack.imgur.com/eJvPE.png

Ich weiß, das hat etwas zu tun mit der Ordnung, wenn ich wechseln den code oben (grün Teekanne code first), als es behebt das problem in der Kamera position #1, aber das problem wird jetzt sichtbar in die Kamera position #2.

Warum ist das passiert und wie kann ich die Objekte hinter anderen Objekten aus gezeichnet wird vor, oder bei allen?

Schreibe einen Kommentar