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

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

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 ()

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top