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
-
27-09-2019 - |
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 ()
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.