Почему, когда я отрисовываю сцену с вращающимися камерами, объекты, которые вы ожидаете увидеть позади других, не делают этого? OPENGL Objective-c - PullRequest
1 голос
/ 19 апреля 2010

Я рендеринг сцены, в которой у меня есть две сферы. Я вращаю камеру вокруг одного из них. То, что происходит, нелогично. Когда камера обходит сферу, другой становится перед ней, когда вы ожидаете, что она будет позади. Таким образом, создается впечатление, что сферы не вращаются вокруг друг друга, и та, которую нужно обойти, всегда авансом. Пожалуйста, помогите.

Вот код, который отображает сцену:

glLoadIdentity();

[self positionCamera];

glutSolidSphere(2, 12,12);

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

glFlush();  

Этот блок является частью класса, который вызывается при использовании.

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

И

-(void)positionCamera{}

Содержит математические операции с камерой и gluLookAt ()

1 Ответ

1 голос
/ 19 апреля 2010

По сути, сейчас вы выполняете рендеринг «назад-вперед», где последний нарисованный примитив всегда будет отображаться поверх остальных.

То, что вы хотите сделать, это включить тест глубины, где глубина каждого фрагмента будет сравниваться до того, как будет нарисован на экране. glEnable(DEPTH_TEST) должно помочь.

...