Pourquoi quand je rends une scène avec des objets de la caméra tournant que vous vous attendez à apparaître derrière d'autres ne le font pas cela? OPENGL Objective-c
-
27-09-2019 - |
Question
Je suis rendu d'une scène dans laquelle j'ai deux sphères. Je tourner une caméra autour d'un d'entre eux. Ce qui se passe est contre-intuitif. Lorsque la caméra tourne autour de la sphère de l'autre obtient devant quand vous attendez qu'il soit derrière. Ainsi, il semble que les sphères ne tourne pas autour de l'autre et celui que le devrait aller est toujours autour de l'avance. S'il vous plaît aider.
Voici le code qui rend la scène:
glLoadIdentity();
[self positionCamera];
glutSolidSphere(2, 12,12);
glPushMatrix();
glTranslatef(5, 0, 0);
glutSolidSphere(0.5, 12,12);
glPopMatrix();
glFlush();
Ce bloc fait partie d'une classe qui est appelée à l'aide.
[NSTimer scheduledTimerWithTimeInterval:DEFAULT_ANIMATION_INTERVAL
target:self
selector:@selector(drawRect)
userInfo:nil
repeats:YES];
-(void)positionCamera{}
Contient les mathématiques faire la révolution de la caméra et gluLookAt ()
La solution
En fait ce que vous faites est maintenant de retour à l'avant rendu, où le dernier primitif dessiné apparaît toujours tirer sur les autres.
Qu'est-ce que vous voulez faire est d'activer le test de profondeur, où la profondeur de chaque fragment sera comparé avant d'être dessiné à l'écran. glEnable(DEPTH_TEST)
devrait aider.