Как получить размер VBO в OpenGL-ES?

Я отправлял массивы вершин (из 32-битных поплавков) на GPU каждый раз, когда я хотел их рисовать, но это было неэффективно, поэтому я переключился на Vertex Buffer Objects для кэширования вершинных массивов в графическом процессоре.

Это работает, но мне было интересно, есть ли способ определить размер данного VBO позже, не возвращаясь к исходным массивам вершин? Здесь процесс, с которым я борюсь:

  • У меня есть массив вершин из, например, шести 32-битных поплавков.
  • Я отправляю свой массив вершин на GPU через OpenGL-ES, где он хранится в VBO, в который я сохраняю дескриптор.
  • Мой массив вершин избыточен в этой точке, поэтому я удаляю его.
  • Позже я использую дескриптор, чтобы заставить OpenGL-ES рисовать что-то, но в этот момент мне также хотелось бы узнать, как определить размер массива вершин, который изначально использовался для создания VBO. У меня теперь есть только дескриптор VBO - могу ли я каким-то образом определить, что я сохранил шесть 32-битных плавающих в этом VBO?

Вероятно, я пропустил что-то действительно очевидное. Спасибо за любые предложения!

Ответы

Ответ 1

Doh! Просто нашел:

int nBufferSize = 0;

glGetBufferParameteriv (GL_ARRAY_BUFFER, GL_BUFFER_SIZE, & nBufferSize);

int originalVertexArraySize = (nBufferSize/sizeof (float));