OpenGL текстурное отображение - PullRequest
0 голосов
/ 16 июля 2010

У меня есть два объекта, нарисованных на экране в openGL, один - сфера, использующая объект GLU, а другой - звезда с текстурным отображением Независимо от координат z, звезда с наложенной текстурой всегда, кажется, рисует впереди. Это нормальное поведение openGL? Есть ли способ предотвратить это?

Примечание: я работаю в рамках worldwind, поэтому, возможно, что-то еще вызывает это. Но мне просто интересно, нормально ли, чтобы объекты с текстурой отображались спереди? Я так не думаю, но я не уверен ...

1 Ответ

0 голосов
/ 13 февраля 2012

Это не ошибка в мире, это действительно желаемое поведение. Использование glVertex2f () аналогично использованию glVertex3f () и установке z = 0. Таким образом, он просто рисует звезду на плоскости, очень близкой к зрителю (также в зависимости от вашей проекции).

Чтобы решить вашу проблему, вы можете отключить запись глубины с помощью glDepthMask (0), затем нарисовать звезду, вызвать glDepthMask (1) и нарисовать сферу, которая теперь будет перед звездой.

Вы также можете использовать glDepthFunc (GL_GREATER) на звезде или glDisable (GL_DEPTH_TEST) на сфере, чтобы быстро достичь того же эффекта.

Чтобы сделать что-либо более сложным (например, звезда, пересекающая сферу), вам нужно использовать матрицы, чтобы поместить звезду в нужное положение.

...