Я визуализирую сцену OpenGL, которая включает некоторый растровый текст. Насколько я понимаю, порядок, в котором я рисую, будет определять, какие предметы будут наверху.
Однако мой растровый текст, хотя я рисую его последним, не находится наверху!
Например, рисую:
1) Фон
2) Кнопки
3) Текст
Все на той же глубине z. Кнопки находятся над фоном, но текст не виден. Если я изменяю глубину текста по оси z, я его вижу, но тогда у меня возникают другие проблемы.
Я использую метод растрового текста из учебников Nehe.
Как сделать текст видимым без изменения глубины z?





Вы можете просто отключить z-тест через
glDisable (GL_DEPTH_TEST); // or something related..
Если вы это сделаете, Z ваших текстовых примитивов будет проигнорирована. Примитивы отрисовываются в том же порядке, в котором вы вызываете gl-functions.
Другой способ - установить некоторое постоянное смещение по оси z через glPolygonOffset (не рекомендуется) или установить режим сравнения глубины на что-то вроде GL_LESS_EQUAL (EQUAL является важным). Это гарантирует, что примитивы, нарисованные с одинаковой глубиной, отображаются друг на друге.
Надеюсь, это поможет.
Хороший ответ - все равно собирался предложить! :)
Вы также можете использовать glDepthFunc (GL_ALWAYS).
Если вы проголосуете за этот ответ, пожалуйста, объясните, что в нем не так.
Да, отключите z-буферизацию для рисования пользовательского интерфейса.