Включение теста глубины на самом деле не сортирует вашу геометрию по глубине - в обычном случае GL_LESS
она просто предотвращает рисование примитивов, если они не ближе к зрителю, чем ранее нарисованные. Это позволяет вам рисовать непрозрачную геометрию в любом порядке и по-прежнему получать желаемый результат, но для правильного рендеринга смешанной геометрии обычно требуется, чтобы все, что находится за смешанным объектом, уже было отрисовано.
Вот что вам нужно сделать, чтобы сочетание непрозрачной и смешанной геометрии выглядело правильно:
- Отделите смешанную геометрию от непрозрачной геометрии.
- Сортируйте свою смешанную геометрию сзади вперед.
- Сначала нарисуйте всю непрозрачную геометрию, как обычно.
- Нарисуйте свою смешанную геометрию в отсортированном порядке. Вы хотите оставить проверку глубины включенной, но временно отключите запись глубины с помощью
glDepthMask(GL_FALSE)
.
С другой стороны, если ваш контент всегда либо полностью непрозрачен, либо полностью прозрачен, вы можете просто включить альфа-тестирование и отключить смешивание, но я предполагаю, что это не то, что вы ищете.