Оптимизировать отбор Frustum - PullRequest
       38

Оптимизировать отбор Frustum

2 голосов
/ 07 октября 2008

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

Ответы [ 3 ]

4 голосов
/ 07 октября 2008

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

Затем вы создаете дерево квадри или октре, чтобы иерархически разделить данные сетки.

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

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

3 голосов
/ 11 октября 2008

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

3 голосов
/ 07 октября 2008
...