Я работаю над игрой в трехмерном мире только с двухмерными спрайтами (например, игра «Не голодай»). (OpenGL ES2 с C ++)
В настоящее время я упорядочиваю элементы задом наперед, прежде чем рисовать их без пакета (поэтому 1 элемент = 1 вызов). Я хотел бы реализовать пакетирование в моей структуре, чтобы уменьшить количество вызовов отрисовки.
Вот что я получил на данный момент:
Рендерер ищет в своем менеджере партий, существует ли партия для данного элемента с его Материалом.
Вычислить большую сетку со всеми спрайтами для каждой партии (1 тип материала = 1 партия).
Когда все партии в порядке, менеджер пакетов вычисляет команды рисования для средства визуализации.
Команды рисования процесса визуализации (связать шейдер, связать текстуры, связать буферы, нарисовать элемент)
Изображение, чтобы показать мою проблему здесь: Образ
Но у меня есть некоторые проблемы, потому что объекты могут находиться за другими объектами внутри другого пакета.
Как я могу сделать что-то подобное?
Похоже, вы пытаетесь оптимизировать рендеринг для двух взаимоисключающих целей.
Один из них должен иметь приоритет над другим. Поскольку Z-порядок важен для правильного появления прозрачности, вам, вероятно, придется иметь этот приоритет. Как только вы это сделаете, вы по-прежнему можете группировать предметы из того же материала в Z-порядке.
Других решений пока нет …