#c #opengl
#c #opengl
Вопрос:
Я рендерю два квадрата с OpenGL с равным z. Когда у меня включена ГЛУБИНА, я получаю следующее изображение, но когда оно выключено, я получаю то, что мне нужно, один фрукт над другим. Можно ли рисовать квадратики с равным z, как я хочу? Мои настройки OGL:
glEnable(GL_BLEND); glEnable(GL_ALPHA_TEST); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
РЕДАКТИРОВАТЬ извините, я забыл упомянуть, что самый верхний левый квадратик я вызываю для рендеринга первым, и я использую орфографический
РЕДАКТИРОВАТЬ 1 когда я визуализирую квадратики с разными Z, я получаю одно и то же изображение, как это исправить?
Ответ №1:
Z-буфер не заботится о прозрачности, поэтому вам нужно отсортировать порядок рисования ваших квадратов по их приблизительной глубине.
Я бы изменил их глубину на другую (вы можете использовать ортографическую проекцию, чтобы они отображались одинакового размера), а затем сначала нарисовать еще один quad.
Кроме того, никогда не рекомендуется рисовать два полигона на одной глубине даже без прозрачности из-за z-борьбы.
Комментарии:
1. Вы также можете найти glDepthFunc полезным.
Ответ №2:
Я поэкспериментировал и увидел, что у меня такая же проблема при рендеринге куба, поэтому проблема была из-за упорядочения вершин и, возможно, параметров отбраковки задней поверхности.