Che cos’è un VBO OpenGL®?

Quando si utilizzano le librerie di grafica per computer Open Graphics Library® (OpenGL®) per la programmazione di computer, un oggetto buffer di vertice (VBO) è una struttura di dati che consente di costruire e archiviare un oggetto tridimensionale (3D) nella memoria della grafica scheda o hardware grafico. Ciò consente di eseguire il rendering di un VBO OpenGL® molto rapidamente e di utilizzare molte meno risorse di sistema rispetto ad altre tecniche che utilizzano il disegno in modalità immediata. Oltre ai guadagni in velocità e alla riduzione dell’overhead grafico, un OpenGL® VBO è anche una struttura dati dinamica, a differenza di un elenco di visualizzazione OpenGL®, che può essere modificato una volta che è in memoria. Il concetto di OpenGL® VBO in realtà è iniziato con i produttori di hardware che originariamente includevano, con nomi diversi, un tipo di funzionalità simile come estensione delle librerie OpenGL® che in seguito è stata standardizzata dall’OpenGL® Architecture Review Board (ARB).

Un OpenGL® VBO è fondamentalmente una combinazione di altri due tipi di strutture dati OpenGL®. Comprende le funzionalità di base di un array di vertici, perché le informazioni per la geometria, comprese le coordinate dei vertici, le normali e il colore, possono essere memorizzate in un array strutturato che può essere passato a OpenGL® per l’elaborazione. A differenza di un array di vertici, tuttavia, un VBO OpenGL® è memorizzato sul lato server del renderer e non ha bisogno di accedere costantemente al lato client per le informazioni sui vertici.

Consentendo al VBO di essere archiviato nella memoria grafica, assume anche alcune delle proprietà di un elenco di visualizzazione. La differenza principale è che un VBO OpenGL® può essere modificato e un elenco di visualizzazione no. Inoltre, il VBO non viene necessariamente copiato nella memoria grafica come sarebbe un elenco di visualizzazione, quindi in memoria deve essere presente solo una struttura di dati.

Quando viene finalmente eseguito il rendering di un VBO OpenGL®, la distanza dalla memoria grafica in cui è memorizzato e dall’unità di elaborazione grafica (GPU) è molto piccola, consentendo una rasterizzazione molto veloce senza la necessità di passare prima attraverso l’hardware di sistema più lento. In alcuni casi, tuttavia, l’uso di VBO non è supportato dall’hardware della scheda grafica. Ciò può portare a problemi di programmazione che rimuovono qualsiasi vantaggio aggiuntivo dall’utilizzo di un VBO o un programma che sarà incompatibile con alcune schede grafiche.

Esistono alcuni metodi che possono aiutare a ottimizzare il trattamento di un OpenGL® VBO quando viene utilizzato. Uno di questi è fornire suggerimenti alla scheda grafica, o OpenGL®, per aiutare a determinare dove il VBO dovrebbe essere posizionato in memoria. A seconda dei suggerimenti forniti, il VBO può essere archiviato direttamente nella memoria grafica della scheda grafica o potrebbe essere archiviato nella memoria ad accesso casuale principale (RAM) del sistema, se ritenuto necessario.