Ось гідний запис про VBO.
Продуктивність
Ось хороший огляд виклику семантики.
Ось ще один хороший огляд проблем ефективності; в ній ми бачимо, що VBO є більш ефективними, ніж масиви.
Причина, яку ми віддаємо перевагу VBO, полягає в тому, що дані завантажуються на карту, і тому вам не доведеться передавати їх кожен кадр. Залежно від типу створеного VBO, ви можете давати підказки графічному драйверу щодо використання (write-many, read-many vs. write-many, never-read тощо).
Використання
VBO справді хороші для статичної геометрії, як місцевість, яку ви не сподіваєтесь змінити, або для встановленої геометрії.
Вершинні масиви корисні для даних, які часто змінюються, але вони також читаються хост-машиною - так, для прямого відображення даних, якими маніпулюють (наприклад, буфери даних лазерного далекомера, там, де я їх використовував), часто. Якщо ви можете піти від того, щоб ніколи не читати дані на хост-пристрої (тому просто висунувши їх на карту), VBO в режимі лише для запису - хороший варіант.
Переносність
Клієнтські вершинні масиви клієнтів.
Вони доступні у OpenGL до 3.0, застарілі в 3.0 та перейшли у версію 3.1+. OpenGL ES підтримує їх (OpenGL ES 2 ні).
VBOs
доступні після OpenGL 1.5. Це єдиний спосіб зберігання геометричних даних у OpenGL ES 2 (і так, WebGL).