Я пишу игру для iOS/Android и ищу наиболее эффективный способ рендеринга данных вершин с помощью OpenGL ES 2.0. У меня есть два разных типа данных: динамические данные, которые меняют свои атрибуты в каждом кадре, например, игрок или анимированные фоновые объекты, и статические данные, такие как статический фон или ландшафт. Я много гуглил со вчерашнего дня, но не смог найти четкого и однозначного ответа на вопрос, что лучше всего было отображать такие данные.
В основном есть три варианта рендеринга таких данных (если я не пропущу ни одного. Если это так, не стесняйтесь меня поправлять.):
Только массивы вершин. Просто заполняйте свои вершины каждым кадром процессора (включая динамические данные).
Только объекты буфера вершин: Выделите VBO на графическом процессоре с помощью GL_DYNAMIC_DRAW, где хранятся как динамические, так и статические данные. Затем динамические данные обновляются каждый кадр через glBufferSubData.
Используйте оба варианта: статические данные сохраняются и обрабатываются с помощью VBO, а динамические данные обрабатываются с помощью массива вершин. С этой опцией нам нужно два прохода рендеринга, один для рендеринга VBO и один для рендеринга массива вершин.
Поскольку первый вариант не использует неизменность статических данных, а третий вариант требует двух проходов рендеринга, я предполагаю, что мне следует выбрать второй вариант. Однако я абсолютно не уверен в этом, и я надеюсь, что вы можете прояснить мое замешательство.