GL_POINTS заслоняет друг друга в симуляции частиц

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

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

Как вы можете видеть, на пути частицы много черных ящиков. Как я могу избежать этого? Функция наложения, которую я использую: GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, С помощью GL_ONE в качестве второго аргумента glBlendFunc дает очень похожие результаты.

4

Решение

http://www.opengl-tutorial.org/intermediate-tutorials/billboards-particles/particles-instancing/#The_main_simulation_loop

Там вы можете найти точно такую ​​же проблему и ее решение. Вы действительно должны отсортировать частицы, как предложил Гиго. Причина в том, что альфа-смешение выглядит правильно только в том случае, если цвета смешаны сзади и вперед.

Однако вы можете избежать сортировки, если действительно хотите. Есть алгоритмы для 3d-прозрачности, которые немного более эффективны. Увидеть: http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-10-transparency/#Order_Independent_Transparency

0

Другие решения


По вопросам рекламы [email protected]