![]() |
OpenGL батчинг и глюк с прозрачностью
Вложений: 1
Незнаю в какой раздел писать, т.к. вопрос чисто по 2D графике, opengl.
Вобщем экспериментировав с opengl решил сделать вывод спрайтов с батчингом. Для начала сделал тупо сбор последовательностей спрайтов с одинаковой текстурой и блендингом в vbo и его выводом с перезапиранием, если появлялся неподходящий спрайт. Для партикловой системы, где всегда имеем много однотипных спрайтов, еще сойдет, но для реальной игровой ситуации уже профит сомнительный (точнее надо самому следить за группировкой спрайтов и т.п. чтобы такой батчинг был выгодным). Решил сначала группировать спрайты по разным vbo. Сразу проблема - что делатьс порядком вывода, ведь после перегруппировки он теряется. Решаю, заюзав depth-test, в z координату записываю порядок в виде удаленности (т.к. проекция ортографическая, на отображение не влияет). Теперь еще одна проблема с прозрачностью. У спрайтов с "нарушеной" последовательностью вывода, альфа-канал "затирает" все что под ним, на скрине это хорошо видно у спрайта 3 (цифрами отмечен порядок вывода) бленд стандартный (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA), depth-func GL_LEQUAL Как от него избавиться? |
Ответ: OpenGL батчинг и глюк с прозрачностью
Venom2
не проще ввести слои ? спрайту задается слой, а потом они группируются по слоям (или в разные vbo или в один vbo но сначала пишем нижние слои, а потом верхние), в итоге избавляемся от zbuffer и твоей проблемы |
Ответ: OpenGL батчинг и глюк с прозрачностью
Цитата:
|
Ответ: OpenGL батчинг и глюк с прозрачностью
Цитата:
И как тогда батчинг делать если в слоях будут разношерстные спрайты? ЗЫ Короче как я понял, для того чтобы не было такого глюка надо запретить рисовать в depth-buffer полупрозрачные пиксели :) Как вот только это сделать? ЗЫЗЫ А нет, это не то, тогда альфа будет затиратся другими спрайтами, и будет маска вместо альфы :) |
Ответ: OpenGL батчинг и глюк с прозрачностью
Сливай в атласы картинки и рисуй. Можно это делать даже в реалтайме (создаем очередь рисуемых картинок, заливаем их в 1 текстуру (рендером в текстуру) без всякого выпендрежа по оптимальной укладке даже, формируем список треугольников в соответствии с необходимым порядком, рисуем без всяких там depth-buffer'ов и прочей ереси).
Ну и таки - оно нахрен не нужно на ПК, угу. Исключая те самые партиклы, где проблемы с очередью отрисовки в общем-то и нет. А так - оно не будет узким местом, скорее ты филлрейтом нагнешь видяху. |
Ответ: OpenGL батчинг и глюк с прозрачностью
тебе же один фиг надо будет пересчитывать буффер каждый кадр, не?
|
Ответ: OpenGL батчинг и глюк с прозрачностью
Цитата:
А хотел сделать полный батчинг, т.е. разместить все по буферам. Короче и вправду нахрен этот авто-батчинг, сделаю ручное управление с атласами, авто только для партиклов. Всем спасибо, все свободны :) |
Часовой пояс GMT +4, время: 09:02. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot