Je rends une scène dans laquelle j'ai deux sphères. Je fais tourner une caméra autour de l'un d'entre eux. Ce qui se passe est contre-intuitif. Quand la caméra tourne autour de la sphère, l'autre se place devant quand on s'attend à ce qu'elle soit derrière. Donc, il semble que les sphères ne tournent pas les unes autour des autres et que celle qui devrait circuler est toujours frontale. S'il vous plaît aider.Pourquoi quand je rends une scène avec une caméra tournante, des objets que vous attendez d'apparaître derrière d'autres ne le font pas? OPENGL Objective-c
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];
Et
-(void)positionCamera{}
Contient les mathématiques font la révolution de la caméra et gluLookAt()
J'ai une classe d'initialisation GL où je fais juste cela. J'ai mesuré le tampon de profondeur. int profondeur; glGetIntegerv (GL_DEPTH_BITS, & depth); NSLog (@ "% i bits profondeur", profondeur) Renvoie 0. Peut-être le problème? – nebulus
Vous devez absolument avoir un tampon de profondeur pour les tests de profondeur. Je ne sais pas pourquoi cela n'existerait pas, mais vérifiez votre code d'initialisation. Vous pouvez toujours essayer de créer explicitement une texture de format de profondeur, juste pour vous assurer qu'il est supporté par le matériel (je ne suis pas familier avec Objective-C, cependant, pas d'échantillon de code). Selon la distance entre vos objets et la caméra, un tampon de profondeur de 16 ou 24 bits devrait être suffisant. Si rien de tout cela ne fonctionne, vous pouvez toujours utiliser trig pour savoir ce qui devrait être devant et rendre celui-ci en dernier. Mais les tests de profondeur sont certainement les meilleures options. – ssube
Génial! J'ai mis un tampon de 24 bits pour la fenêtre de mes applications. IB vous permet de le faire facilement en utilisant l'inspecteur. Ça marche. Merci les gars! – nebulus