Я разрабатываю пакетное средство рендеринга для WebGL. По сути, он группирует экранный объект (или просто объекты) в пакеты, которые могут быть визуализированы в одном вызове отрисовки. Каждый пакет - это просто упорядоченный список объектов.
Он сводится к следующей проблеме:
Каждый объект имеет layerID & batchID.
1) layerID - это количество перекрывающихся объектов ниже. Эти объекты должны быть представлены ранее. Вы можете предположить , что у вас есть список всех объектов ниже (называемых зависимостями). Зависимости могут быть в одной партии; однако они должны быть вставлены раньше.
2) Объекты с одинаковым batchID могут быть в одной группе. Если группа содержит объекты с определенным идентификатором пакета, нет ограничение на количество объектов этого идентификатора пакета.
Объекты в пакете могут содержать только "K" разные batchID. Как упоминалось ранее, количество объектов здесь не имеет значения.
Учитывая список экранных объектов, их layerID и batchID и их зависимостей, как вы можете сгруппировать их вместе в наименьшее количество групп?
Я думаю о следующем решении для этого:
- Для каждого batchID создайте отдельную группу (список ).
- Поместите все объекты в свои корзины, отсортированные по их layerID.
- Объедините "K" корзины так, чтобы они были в порядке по layerID в одну партию.