Вопрос

Я пишу игру на C ++, и у меня есть уровень, состоящий из множества отдельных сеток, каждая из которых имеет свой собственный буфер вершин. я использую vmmlib (блестящий бесплатный gl compat. vector / matrix library), чтобы создать свой сборщик усеченного конуса и тестировать его на ограничивающей сфере каждой сетки на уровне. к сожалению, мой уровень может состоять из 800 ячеек, и каждый из них проходит каждый кадр медленно. Каков наилучший способ оптимизации кода, чтобы мне не приходилось просматривать все сетки на каждой итерации? Ограничение объемов внутри усеченного конуса?

Это было полезно?

Решение

Да, ограничивающий объект - это путь, вы должны позаботиться о выборе подходящего ограничивающего объема, например, для мешей, которые перемещаются по сцене, например ботов, и не ложатся на цилиндр, это лучший объем, другие лучше представлены кубы (по оси или нет).

Затем вы создаете квадродерево или октодерево для иерархического разделения данных меша.

Это очень хорошо подходит для отбраковки наружных усеченных.

Для внутренних помещений лучше всего использовать BSP, поскольку у вас есть много стен для разделения пространства. Вы по-прежнему должны ограничивать по объему ваши сетки, которые имеют более 10 полигонов.

Другие советы

Я просто хотел добавить, что в наши дни порталы обычно предпочтительнее BSP или в сочетании с ними, но у меня недостаточно репутации, чтобы редактировать исходное сообщение.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top