GL_TRIANGLE_STRIP и проблемы с прозрачностью

Я хочу нарисовать прозрачный многоугольник (например, пирамиду). Некоторые лица кажутся прозрачными, тогда как некоторые лица кажутся непрозрачными.

Я рисую с помощью GL_TRIANGLE_STRIP.

Я включил режим наложения, но не повезло.

Пожалуйста, смотрите прикрепленное изображение,


введите здесь описание изображения


person vaishak    schedule 05.01.2017    source источник


Ответы (1)


Это происходит из-за порядка отрисовки треугольников. Некоторые треугольники рисуются первыми, они записывают свои значения глубины в текстуру глубины, затем появляется следующий треугольник и проверяет, есть ли что-то перед ним. Если есть, то он не будет отображаться.

Если треугольник, который находится сзади, визуализируется первым, тогда нет проблем, треугольник перед ним смотрит на текстуру глубины, видит, что у него большее значение z, поэтому он правильно визуализируется, это места, где цвет менее прозрачный.

Проблема возникает, когда передний треугольник рендерится первым. Он записывает значение глубины в буфер глубины, затем появляется треугольник сзади, видит, что перед ним уже что-то есть, поэтому он не обрабатывается.

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

person Bálint    schedule 05.01.2017
comment
Отключение тестирования глубины сработало. Большое спасибо за помощь. - person vaishak; 05.01.2017