Ecco un discreto commento sui VBO.
Prestazione
Ecco una buona panoramica della semantica chiamante.
Ecco un'altra buona panoramica dei problemi di prestazioni; in esso vediamo che i VBO sono più performanti degli array.
Il motivo per cui preferiamo i VBO è che i dati vengono caricati sulla scheda, quindi non è necessario trasferirli su ogni frame. A seconda del tipo di VBO creato, è possibile fornire suggerimenti sul driver grafico sull'utilizzo (write-many, read-many vs. write-many, never-read, ecc.).
uso
I VBO sono davvero buoni per la geometria statica come il terreno che non ti aspetti di cambiare, o per la geometria istanziata.
Le matrici di vertici sono utili per i dati che cambiano frequentemente ma che vengono letti anche dalla macchina host, quindi per il rendering diretto dei dati che vengono manipolati (i buffer di dati del telemetro laser, ad esempio, sono dove li ho usati frequentemente). Se riesci a cavartela senza mai leggere i dati sul dispositivo host (quindi, semplicemente spingendoli fuori sulla scheda), i VBO in modalità di sola scrittura sono una buona opzione.
portabilità
Array di vertici lato client
Questi sono disponibili in OpenGL prima della 3.0, deprecati in 3.0 e passati in 3.1+. OpenGL ES li supporta (OpenGL ES 2 no).
VBO
Questi sono disponibili dopo OpenGL 1.5. Questi sono gli unici modi per memorizzare i dati della geometria in OpenGL ES 2 (e così, WebGL).