OpenGL: рендеринг двух прозрачных плоскостей, пересекающихся друг с другом: невозможно или нет?
Я быстро столкнулся с этой проблемой, это кажется невозможным для рендеринга.
Как решить эту проблему? Я хочу, чтобы OpenGL отображал его так, как будто он смотрит на правую часть этого изображения ниже:
Ответ 1
Вам нужно отобразить свои самолеты, отключив проверку глубины и используя независимую формулу смешивания.
Если у вас есть непрозрачные геометрии на обратной стороне, нарисуйте их, поместите буфер глубины только для чтения, вместо того чтобы отключить проверку глубины и сделать прозрачные.
Существуют также продвинутые методы, касающиеся этой общей проблемы, такие как обработка глубины.
ИЗМЕНИТЬ
Вы можете поместить буфер глубины в режим чтения только с помощью: glDepthMask (GL_FALSE).
Вот хорошая статья, объясняющая, почему вы не можете достичь идеальной прозрачности: Сортировка прозрачности. Также рассмотрите Заказать независимую прозрачность с двухслойным пилингом, в которой рассматриваются два метода (один из них довольно простой и однопроходный), для которых был точный (или приблизительный) порядок независимых прозрачность.
Одним нетривиальным решением является разбиение плоскостей на части, сортировка их, а затем их возврат назад. Однако идеальной сортировки трудно достичь.
Как и в статье, опубликованной в другом ответе:
Сортировка прозрачности: сортировка по глубине