Я бачу, що версії 3 та новіші версії OpenGL усувають використання візуалізації на стороні клієнта. Негайний режим було усунено, а вершинні масиви, здається, застаріли. Натомість, якщо я правильно розумію, VBO - це основний спосіб надання вершин.
Хоча я бачу логіку, що має єдиний спосіб візуалізації всього, чи це так, що VBO не мають серйозних недоліків над масивами вершин? Я думав, що VBO повинні бути великими буферами, що містять> 1 Мб даних, як правило. Що робити, якщо у мене є сцена, яка має багато меншої геометрії? У мене є графік сцени з великою кількістю вузлів, кожен з яких потребує власного перетворення тощо. Кожен вузол також повинен бути в змозі видалити окремо, додати його окремо тощо. Я раніше використовував вершинні масиви. Отже, моє перше питання полягає в тому, що, якщо я перейду до VBO, буде більше великих накладних витрат на об'єкти моєї графіки сцени, оскільки VBO потрібно виділити для кожного об'єкта.
Інша стурбованість полягає в тому, що геометрія, яку я надаю, може бути дуже динамічною. У гіршому випадку, можуть бути випадки, коли всю геометрію потрібно буде відрегулювати кожен кадр протягом певного періоду часу. Чи будуть у цьому випадку використання VBO гірші за продуктивність, ніж вершинні масиви, або ж VBO в гіршому випадку виконувати так само роботу, як і вершинні масиви, але не більше?
Отже, у більш стислому форматі мої запитання:
1) Чи є суттєві накладні витрати на розподіл / розміщення VBO (я маю на увазі простий акт налаштування буфера)?
2) Якщо я оновлюю дані з центрального процесора кожен кадр, чи може це бути значно гірше, ніж якби я використовував вершинні масиви?
І нарешті, я хотів би знати:
3) Якщо відповідь на будь-яке з вищезазначених питань "так", навіщо зневажити інші способи візуалізації, які можуть мати переваги перед VBO? Щось тут мені не вистачає, як методи, які я повинен використовувати для зменшення деяких з цих потенційних витрат на розподіл тощо?
4) Чи суттєво змінюються відповіді на будь-яке з цих питань залежно від того, яку версію OpenGL я використовую? Якщо я перефактуюю свій код на OpenGL 3 або 4, сумісний вперед, використовуючи VBO в спосіб, який є ефективним, чи будуть ті самі методи, які будуть ефективнішими з OpenGL 2, чи, ймовірно, що деякі методи набагато швидше з OpenGL 3 + та інші з OpenGL 2?
Я задав це запитання під час переповнення стека, але я повторно розміщую тут, оскільки зрозумів, що цей сайт може бути більш підходящим для мого запитання.