Я хочу получить дополнительное увеличение производительности (FPS) в моем приложении для iPhone. Я уже использую чередующиеся данные, GL_SHORT и один атлас текстуры. См. этот вопрос для получения подробной информации что я уже сделал.
Теперь я хочу взглянуть на использование VBO для повышения производительности. Согласно документации Apple OpenGL ES, это хороший шаг. Однако в нем не рассматривается, как (или если) на VBO влияют изменения в матрице представления модели. По сути, у меня один и тот же объект визуализируется в сцене несколько раз, но каждый раз с использованием немного другой матрицы представления модели. Основное различие между объектами (кроме положения в сцене) - это наложение текстуры. Все они имеют немного разные координаты текстуры.
Помогут ли VBO в этой ситуации? Следует ли выделять отдельный VBO для каждого отдельного объекта?
Обновление 1
Пока что похоже, что VBO негативно влияют на мою работу. FPS снова упал до средних и высоких 20. Я выделяю 70 VBO: 35 для данных и 35 для индексов. Я мог бы уменьшить это число до 35 для данных и одного глобального массива индексов. Я использую glBufferSubData () для обновления координат текстуры по мере необходимости.
Другая мысль - разбить все статические данные и указать GL_STATIC_DRAW для этого VBO.
OES_mapbufferи сгенерировать данные непосредственно в нем. Применяются те же предостережения для частичных обновлений на графических процессорах с аппаратной поддержкой VBO, поскольку вам разрешено отображать буфер и изменять только его часть, но вы можете сигнализировать, что вас не волнует старое содержимое, вызвав glBufferData с нулевой указатель перед его отображением. - person Pivot   schedule 13.12.2009