Hva er en OpenGL® VBO?
Når du bruker Open Graphics Library® (OpenGL®) datamaskingrafikkbibliotek for programmering av datamaskiner, er et vertex buffer-objekt (VBO) en datastruktur som gjør det mulig å konstruere og lagre et tredimensjonalt (3D) objekt i minnet til grafikken kort- eller grafikkmaskinvare. Dette gjør at en OpenGL® VBO kan gjengis veldig raskt og å bruke langt færre systemressurser enn andre teknikker som bruker umiddelbar modustegning. I tillegg til gevinstene i hastighet og reduksjon i grafikkoverhead, er en OpenGL® VBO også en dynamisk datastruktur - i motsetning til en OpenGL®-visningsliste - som kan endres når den er i minnet. Konseptet med en OpenGL® VBO startet faktisk med maskinvareprodusenter som opprinnelig inkluderte - under forskjellige navn - en lignende type funksjonalitet som en utvidelse av OpenGL®-bibliotekene som senere ble standardisert av OpenGL® Architecture Review Board (ARB).
En OpenGL® VBO er i utgangspunktet en kombinasjon av to andre typer OpenGL® datastrukturer. Den omfatter den grunnleggende funksjonaliteten til en toppunktoppstilling, fordi informasjonen for geometrien - inkludert toppunktkoordinater, normaler og farger - alle kan lagres i en strukturert gruppe som kan sendes til OpenGL® for behandling. I motsetning til et toppunkt-array, er imidlertid en OpenGL® VBO lagret på serversiden av rendereren og trenger ikke å hele tiden få tilgang til klientsiden for toppunktinformasjonen.
Ved å la VBO lagres i grafikkminne, tar den også på seg noen av egenskapene til en visningsliste. Den største forskjellen er at en OpenGL® VBO kan modifiseres, og en visningsliste kan ikke. I tillegg kopieres ikke VBO nødvendigvis til grafikkminnet slik en visningsliste ville være, så bare en datastruktur trenger å være til stede i minnet.
Når en OpenGL® VBO endelig blir gjengitt, er avstanden fra grafikkminnet som den er lagret i og grafikkbehandlingsenheten (GPU) veldig liten, noe som gir veldig rask rasterisering uten behov for å gå gjennom tregere systemmaskinvare først. I noen tilfeller støttes imidlertid ikke bruken av VBO-er av grafikkort-maskinvare. Dette kan føre til programmeringsproblemer som fjerner eventuelle ekstra fordeler ved å bruke en VBO, eller et program som vil være uforenlig med noen grafikkort.
Det er noen metoder som kan hjelpe deg med å optimalisere hvordan en OpenGL® VBO behandles når den brukes. Et av disse er å gi hint til grafikkortet, eller til OpenGL®, for å finne ut hvor VBO skal ligge i minnet. Avhengig av antydningen, kan VBO lagres direkte i grafikkminnet på grafikkortet, eller kan lagres i RAM-minnet (RAM) på systemet hvis det anses nødvendig.