Почему, когда я оказываю сцену с вращающимися объектами камеры, которые вы ожидаете появиться на других, не делают этого? OpenGL Objective-C
-
27-09-2019 - |
Вопрос
Я делаю сцену, в которой у меня есть две сферы. Я вращаю камеру вокруг одного из них. То, что происходит, является контр-интуитивным. Когда камера идет вокруг сферы, другой попадает перед ним, когда вы ожидаете, что она будет позади. Таким образом, оно появляется как будто сферы не вращаются друг на друга, и тот, который должен обойтись, всегда аванс. Пожалуйста помоги.
Вот код, который делает сцену:
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)
Должна помочь.