Учитывая, что ваша камера работает как в Diablo (независимо от того, изометрия или перспектива):
Если у вас есть фиксированный размер карты, вы можете использовать 1 VBO для базовой геометрии вашей карты, предполагая, что вы будете использовать решение на основе карты высот. Невидимые квадраты будут отброшены вашей видеокартой после вершинного шейдера, не влияя на скорость заполнения пикселей. Они не стоят накладных расходов на выбраковку с вашей стороны. Такие детали, как Камни, Дома и т. Д., В любом случае будут иметь свой собственный VBO.
Если вы стремитесь к движку потокового контента с огромным бесшовным миром, создавайте чанки, размер чанка зависит от вашей игры. Разделите вашу местность на эти куски и перед рисованием проверьте усеченную поверхность камеры относительно их ограничивающих рамок.
О рисовании фрагментов:
Самый простой способ, которого достаточно для большинства игр, - сделать каждый фрагмент своей собственной геометрией, VBO и т. Д. Но вы можете оптимизировать позже, и ваша реализация ландшафта не должна влиять на дизайн API вашего движка (вам придется реализовать множество различных способов рисования вещей в вашем движке, например, частиц, эффектов постобработки и т. Д. ).
Один из способов оптимизации - использование только одного VBO для геометрии и использования инстансов отрисовки, точно так же, как в системах частиц вы затем берете какой-то другой источник для некоторых ваших данных, например ваше глобальное преобразование, высоту каждой вершины и т. Д. .
Но имейте в виду, что большинство игр не нуждаются в такой большой оптимизации только на местности. На вашем пути появятся и другие системы, более достойные оптимизации.
person
Vengarioth
schedule
31.12.2013