Perché quando il rendering di una scena con una Revolving oggetti della fotocamera che ci si aspetterebbe di apparire dietro gli altri non farlo? OPENGL Objective-C

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

Domanda

Io sono il rendering di una scena in cui io ho due sfere. Sto che ruotano intorno a una macchina fotografica uno di loro. Ciò che accade è intuitivo. Quando la telecamera gira intorno alla sfera l'altro ottiene di fronte ad essa, quando ci si aspetta che sia dietro. Così sembra come se le sfere non sono ruotano intorno a vicenda e quello del dovrebbe andare in giro è sempre in anticipo. Si prega di aiuto.

Ecco il codice che rende la scena:

glLoadIdentity();

[self positionCamera];

glutSolidSphere(2, 12,12);

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

glFlush();  

Questo blocco è parte di una classe che viene chiamato sull'utilizzo.

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

E

-(void)positionCamera{}

Contiene la matematica fare la rivoluzione fotocamera e gluLookAt ()

È stato utile?

Soluzione

In sostanza quello che stai facendo ora è un back-to-front rendering, dove l'ultimo primitiva disegnato apparirà sempre essere disegnato sopra gli altri.

Che cosa si vuole fare è abilitare il test di profondità, dove la profondità di ogni frammento sarà confrontato prima di essere disegnato sullo schermo. glEnable(DEPTH_TEST) dovrebbe aiutare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top