Трудно понять, как использовать VBO.

Итак, я пытаюсь реализовать VBO, но не могу найти хороший учебник или документацию по их правильному использованию. Я предполагаю, что вы делаете VBO, когда он нужен какому-то объекту, а затем, когда появляется следующий кадр, он рисуется/перерисовывается. Но вот тут я в замешательстве:

  • Как нарисовать несколько VBO?
  • Как изменить VBO?
  • Когда и где я могу сделать новый VBO?

Мне очень жаль, и я только изучаю OpenGL, так что извините меня за это! Но трудно найти учебник, который не просто создает один VBO и не делает этот VBO одновременно с его рисованием.

В основном я прошу лучше понять, как работают VBO, где они хранятся и как рисуются. Сколько VBO слишком много? Когда я вызываю glVertexPointer(), что именно происходит с сохраненными VBO? Что делать, если я пытаюсь нарисовать VBO разных типов? (просто использовать треугольники?)


person SpaceFace    schedule 17.02.2012    source источник


Ответы (1)


Как нарисовать несколько VBO?

VBO — это хранилище данных, как и текстуры. Есть функция glBindBuffer, которая связывает VBO для последующего доступа через glVertexAttribPointer.

Как изменить VBO?

glBufferSubData

or

buf = glMapBuffer(...);
modify_on(buf);
glUnmapBuffer(...);

Когда и где я могу сделать новый VBO?

Всякий раз, когда существующие VBO больше не могут удовлетворить ваши требования. Либо потому, что они слишком маленькие, полные или не соответствуют вашему типу данных.

person datenwolf    schedule 17.02.2012