Vad är en OpenGL® VBO?
När du använder Open Graphics Library® (OpenGL®) datorgrafikbibliotek för datorprogrammering är ett vertexbuffertobjekt (VBO) en datastruktur som gör det möjligt att konstruera och lagra ett tredimensionellt (3D) objekt i grafikminnet kort- eller grafikhårdvara. Detta gör att en OpenGL® VBO kan återges mycket snabbt och att använda mycket färre systemresurser än andra tekniker som använder omedelbar driftsättning. Förutom vinsterna i hastighet och minskningen av grafikomkostnader är en OpenGL® VBO också en dynamisk datastruktur - till skillnad från en OpenGL®-visningslista - som kan ändras när den är i minnet. Konceptet med en OpenGL® VBO började faktiskt med hårdvarutillverkare som ursprungligen inkluderade - under olika namn - en liknande typ av funktionalitet som en förlängning av OpenGL®-biblioteken som senare standardiserades av OpenGL® Architecture Review Board (ARB).
En OpenGL® VBO är i grunden en kombination av två andra typer av OpenGL® datastrukturer. Det omfattar den grundläggande funktionaliteten i en toppartikel eftersom informationen för geometri - inklusive toppkoordinater, normaler och färg - alla kan lagras i en strukturerad grupp som kan skickas till OpenGL® för bearbetning. Till skillnad från en toppunktuppsättning lagras emellertid en OpenGL® VBO på serversidan av renderaren och behöver inte ständigt komma åt klientsidan för vertexinformation.
Genom att låta VBO lagras i grafikminnet tar det också på vissa av egenskaperna i en skärmlista. Den största skillnaden är att en OpenGL® VBO kan modifieras och en skärmlista inte kan. Dessutom kopieras inte VBO nödvändigtvis till grafikminnet som en visningslista skulle vara, så det behöver bara finnas en datastruktur i minnet.
När en OpenGL® VBO äntligen återges är avståndet från grafikminnet i vilket det lagras och grafikbearbetningsenheten (GPU) mycket litet, vilket möjliggör mycket snabb rasterisering utan att behöva gå igenom långsammare systemhårdvara. I vissa fall stöds dock inte användning av VBO: er av grafikkortshårdvara. Detta kan leda till programmeringsproblem som tar bort eventuella extra fördelar med att använda en VBO, eller ett program som kommer att vara oförenligt med vissa grafikkort.
Det finns några metoder som kan hjälpa dig att optimera hur en OpenGL® VBO behandlas när den används. Ett av dessa är att ge antydningar till grafikkortet eller OpenGL® för att avgöra var VBO ska placeras i minnet. Beroende på antydda tips kan VBO lagras direkt i grafikminnet på grafikkortet, eller kanske lagras i systemets huvudminne för slumpmässigt åtkomst (RAM) om det anses nödvändigt.