Почему, когда я оказываю сцену с вращающимися объектами камеры, которые вы ожидаете появиться на других, не делают этого? OpenGL Objective-C

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

Вопрос

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

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

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{}

Содержит математику Do Camera Revolution и Glulookat ()

Это было полезно?

Решение

В основном то, что вы делаете сейчас, - это обратный рендеринг, где натянут последнюю примитивную нарисованную.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top