Wat is een OpenGL® VBO?
Bij gebruik van de Open Graphics Library® (OpenGL®) computer grafische bibliotheken voor computerprogrammering, is een vertex buffer object (VBO) een gegevensstructuur waarmee een driedimensionaal (3D) object kan worden geconstrueerd en opgeslagen in het geheugen van de grafische kaart kaart- of grafische hardware. Hierdoor kan een OpenGL® VBO zeer snel worden weergegeven en veel minder systeembronnen gebruiken dan andere technieken die directe modustekening gebruiken. Naast de snelheidswinst en de vermindering van de grafische overhead, is een OpenGL® VBO ook een dynamische gegevensstructuur - in tegenstelling tot een OpenGL®-weergavelijst - die kan worden gewijzigd zodra deze in het geheugen is opgeslagen. Het concept van een OpenGL® VBO begon eigenlijk met hardwarefabrikanten die oorspronkelijk - onder verschillende namen - een vergelijkbaar type functionaliteit als een uitbreiding van de OpenGL®-bibliotheken hadden, die later werd gestandaardiseerd door de OpenGL® Architecture Review Board (ARB).
Een OpenGL® VBO is eigenlijk een combinatie van twee andere soorten OpenGL®-datastructuren. Het omvat de basisfunctionaliteit van een hoekpuntmatrix, omdat de informatie voor de geometrie - inclusief de hoekpuntcoördinaten, normalen en kleur - allemaal kan worden opgeslagen in een gestructureerde reeks die kan worden doorgegeven aan OpenGL® voor verwerking. In tegenstelling tot een hoekpuntmatrix wordt een OpenGL® VBO echter opgeslagen aan de serverzijde van de renderer en hoeft deze niet constant toegang te hebben tot de clientzijde voor de hoekpuntinformatie.
Door toe te staan dat de VBO in grafisch geheugen wordt opgeslagen, neemt het ook enkele eigenschappen van een weergavelijst over. Het grote verschil is dat een OpenGL® VBO kan worden gewijzigd en een weergavelijst niet. Bovendien wordt de VBO niet noodzakelijkerwijs naar het grafische geheugen gekopieerd zoals een weergavelijst zou zijn, dus er hoeft slechts één gegevensstructuur in het geheugen aanwezig te zijn.
Wanneer een OpenGL® VBO eindelijk wordt weergegeven, is de afstand tot het grafische geheugen waarin het is opgeslagen en de grafische verwerkingseenheid (GPU) erg klein, waardoor een zeer snelle rasterisatie mogelijk is zonder eerst door langzamere systeemhardware te hoeven gaan. In sommige gevallen wordt het gebruik van VBO's echter niet ondersteund door grafische kaarthardware. Dit kan leiden tot programmeerproblemen waardoor extra voordelen van het gebruik van een VBO of een programma dat niet compatibel is met sommige grafische kaarten worden verwijderd.
Er zijn enkele methoden die kunnen helpen optimaliseren hoe een OpenGL® VBO wordt behandeld wanneer deze wordt gebruikt. Een daarvan is het geven van hints aan de grafische kaart of aan OpenGL®, om te helpen bepalen waar de VBO zich in het geheugen moet bevinden. Afhankelijk van de gegeven aanwijzingen kan de VBO direct worden opgeslagen in het grafische geheugen op de grafische kaart, of kan worden opgeslagen in het hoofdgeheugen voor willekeurige toegang (RAM) van het systeem, indien nodig geacht.