Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Уничтожение объектов
#9
Fps падает в отсутствие оптимизации покадровой нагрузки. Чем больше видимых объектов, тем больше расчетов матриц в Update и нагрузка на пайплайн для обработки примитивов (которые, возможно, в итоге вообще не будут отрисованы). Так что, по идее, нужно скрывать объекты, которые находятся за пределами экрана. Куллинг по пирамиде видимости - EngineSetCulling(vcObjectBased) или EngineSetCulling(vcHierarchical) - может в этом помочь, но не во всех случаях - например, если объекты находятся за стеной или горой, то они все равно считаются видимыми для куллинга.
В интерьерных сценах можно сделать систему порталов (т.е., показываем комнату, только если игрок в ней, или на экране виден дверной проем - и так же, рекурсивно, связанные с ней комнаты). В общем случае это будет вычислительно дешевле, чем обычный куллинг, который является брутфорс-алгоритмом - при использовании порталов мы вообще не проходим по заведомо невидимым комнатам и не проверяем их. Xtreme в принципе имеет все нужные для системы порталов инструменты, но у меня пока нет готовой реализации.
В уличных сценах можно для детализированных объектов сделать lod'ы и использовать мультипрокси, но это конечно немного усложняет логику игры, в зависимости от используемых компонентов.

Из-за того, что мало встроенных оптимизаций, GLScene/Xtreme3D - скорее для маленьких игр с ограниченным миром, чем для open world и тому подобного. Вообще библиотека, как я понимаю, изначально создавалась больше под научную визуализацию, да и игры в те времена были не такие большие.
Ответ


Сообщения в этой теме

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)