Рендеринг прозрачной 3D-формы (quad) с равным z-порядком

#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:

Я поэкспериментировал и увидел, что у меня такая же проблема при рендеринге куба, поэтому проблема была из-за упорядочения вершин и, возможно, параметров отбраковки задней поверхности.