Por que quando eu renderizo uma cena com uma câmera giratória que você esperaria aparecer por trás de outros não fazem isso? OpenGL Objective-C

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

Pergunta

Estou fazendo uma cena em que tenho duas esferas. Estou girando uma câmera em torno de uma delas. O que acontece é contra-intuitivo. Quando a câmera contorna a esfera, a outra fica na frente dela quando você espera que fique para trás. Então, parece que as esferas não estão girando umas com as outras e a que deve dar a volta é sempre franca. Por favor ajude.

Aqui está o código que renderiza a cena:

glLoadIdentity();

[self positionCamera];

glutSolidSphere(2, 12,12);

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

glFlush();  

Este bloco faz parte de uma classe que é chamada usando.

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

E

-(void)positionCamera{}

Contém Math Do Camera Revolution e Glulookat ()

Foi útil?

Solução

Basicamente, o que você está fazendo agora é uma renderização de volta à frente, onde o último desenho primitivo sempre parecerá atraído pelos outros.

O que você deseja fazer é ativar o teste de profundidade, onde a profundidade de cada fragmento será comparada antes de ser desenhada na tela. glEnable(DEPTH_TEST) deve ajudar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top