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 vertici (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 di velocità e alla riduzione del sovraccarico grafico, un VBO OpenGL® è anche una struttura di dati dinamica - a differenza di un elenco di visualizzazione OpenGL® - che può essere modificato una volta che è in memoria. Il concetto di un VBO OpenGL® in realtà è iniziato con i produttori di hardware che originariamente includevano - con nomi diversi - un tipo simile di funzionalità come un'estensione delle librerie OpenGL® che in seguito è stata standardizzata dalla OpenGL® Architecture Review Board (ARB).
Un VBO OpenGL® è fondamentalmente una combinazione di altri due tipi di strutture dati OpenGL®. Comprende le funzionalità di base di un array di vertici, poiché le informazioni per la geometria - comprese le coordinate del vertice, le normali e il colore - possono essere archiviate in un array strutturato che può essere passato a OpenGL® per l'elaborazione. A differenza di un array di vertici, tuttavia, un VBO OpenGL® è archiviato sul lato server del renderer e non è necessario accedere costantemente al lato client per le informazioni sui vertici.
Consentendo al VBO di essere memorizzato 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 solo una struttura di dati deve essere presente in memoria.
Quando viene finalmente visualizzato un VBO OpenGL®, la distanza dalla memoria grafica in cui è memorizzato e l'unità di elaborazione grafica (GPU) è molto piccola, consentendo una rasterizzazione molto veloce senza la necessità di spostarsi prima attraverso un hardware di sistema più lento. In alcuni casi, tuttavia, l'uso dei VBO non è supportato dall'hardware della scheda grafica. Ciò può portare a problemi di programmazione che rimuovono eventuali vantaggi aggiuntivi dall'uso di un VBO o un programma che sarà incompatibile con alcune schede grafiche.
Esistono alcuni metodi che possono aiutare a ottimizzare il modo in cui viene trattato un VBO OpenGL® quando viene utilizzato. Uno di questi è quello di fornire suggerimenti alla scheda grafica, o OpenGL®, per aiutare a determinare dove il VBO dovrebbe trovarsi in memoria. A seconda dei suggerimenti forniti, il VBO può essere archiviato direttamente nella memoria grafica sulla scheda grafica o, se ritenuto necessario, può essere archiviato nella memoria RAM (RAM) principale del sistema.