Обычно вы делите свою местность на несколько небольших участков, которые вы будете передавать по мере продвижения игрока.В моем механизме ландшафта я никогда не помещал буфер индекса в объекты буфера, так как механизм LOD постоянно изменяет, какие вершины прорисовываются, и порядок того, что рисуется для улучшения раннего Z. 256 × 256 - это разумный размер патча, особенно если вы используетеструктура, подобная квадродеревам.
Итак, вы можете загрузить 9 участков местности, размер каждого участка которых выбирается таким образом, чтобы видимый диапазон заканчивался где-то около границ вокруг центрального участка.
| |
---+---+---
| C |
---+---+---
| |
Когда игрок перемещается в патче C, диапазон видимости гарантирует, что он не может смотреть за пределы загруженной области.Как только игрок перейдет в другой патч, оберните патчи с другой стороны, то есть
A | |
---+---+---
B | X-> C
---+---+---
C | |
переназначит плитки A, B, C на
| | A'
---+---+---
->C | B'
---+---+---
| | C'
Где A ',B ', C' перезаписывают память A, B, C, но наполняют ее новым содержанием.Поскольку игрок переходит в новый патч C с дальнего конца, то есть просто может видеть более близкие части новых патчей, вы можете загрузить содержимое A ', B', C 'в несколько кадров.
Toответьте на два вопроса:
загрузка геометрии на самом деле довольно быстрый процесс, так что это не остановка для показа.Вы не увидите мерцания, поскольку загрузка данных происходит между кадрами рендеринга, и только после обновления данных начнутся команды рисования.
Способ загрузки материала не влияет напроизводительность рендеринга.Однако это влияет на то, сколько времени потребуется для загрузки самой карты.Если вы хотите, чтобы игроки могли проходить через большие миры без раздражающих промежуточных фаз загрузки, вам придется загружать небольшие патчи по требованию.