Порядок рисования в OpenGL

Я представляю сцену OpenGL, которая включает некоторый растровый текст. Я понимаю, что порядок, в котором я рисую вещи, определит, какие элементы находятся на вершине.

Однако мой растровый текст, даже если я рисую последний, не на высоте!

Например, я рисую:

1) Справочная информация 2) Кнопки 3) Текст

Все на той же глубине z. Кнопки находятся над фоном, но текст невидим. Я меняю глубину z текста, я вижу это, но у меня есть другие проблемы.

Я использую метод растрового текста из Nehe Tutorials.

Как я могу сделать текст видимым без изменения глубины z?

2 ответа

Вы можете просто отключить z-тест через

glDisable (GL_DEPTH_TEST); // or something related..

Если вы это сделаете, Z ваших текстовых примитивов будет проигнорирован. Примитивы рисуются в том же порядке, что и ваш вызов gl-функций.

Другим способом было бы установить некоторое постоянное z-смещение через glPolygonOffset (не рекомендуется) или установить режим сравнения глубины на что-то вроде GL_LESS_EQUAL (EQUAL является важным). Это гарантирует, что примитивы, нарисованные с одинаковой глубиной, отображаются друг на друга.

Надеюсь, что это поможет.


Вы также можете использовать glDepthFunc (GL_ALWAYS).

licensed under cc by-sa 3.0 with attribution.