Warum, wenn ich eine Szene mit einer sich drehenden Kamera Objekte machen, dass man erwarten würde hinter anderen erscheinen tun das nicht? OPENGL Objective-c

StackOverflow https://stackoverflow.com/questions/2664936

Frage

Ich bin Rendern einer Szene, in der ich zwei Kugeln haben. Ich revolvierenden eine Kamera um eine von ihnen. Was passiert, ist kontraintuitiv. Wenn die Kamera die Kugel geht um die andere vor ihm bekommt, wenn man es erwarten würde es hinter sein. So ist es, als ob die Kugeln erscheint nicht umeinander drehende und die eine der sollte um gehen ist immer im Voraus. Bitte Hilfe.

Hier ist der Code, der die Szene macht:

glLoadIdentity();

[self positionCamera];

glutSolidSphere(2, 12,12);

glPushMatrix();
glTranslatef(5, 0, 0);
glutSolidSphere(0.5, 12,12);
glPopMatrix();

glFlush();  

Dieser Block ist Teil einer Klasse, die auf der Verwendung aufgerufen wird.

[NSTimer scheduledTimerWithTimeInterval:DEFAULT_ANIMATION_INTERVAL 
                                 target:self 
                               selector:@selector(drawRect) 
                               userInfo:nil 
                                repeats:YES];

Und

-(void)positionCamera{}

Enthält Mathematik Kamera Revolution und gluLookAt ()

War es hilfreich?

Lösung

Im Grunde, was Sie tun, ist jetzt ein Back-to-Front-Rendering, wo die letzte primitiven gezogen wird immer über die andere gezogen erscheinen werden.

Was Sie tun möchten, ist die Tiefentest zu ermöglichen, wobei die Tiefe jedes Fragments wird, bevor auf dem Bildschirm gezeichnet verglichen werden wird. glEnable(DEPTH_TEST) sollte helfen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top