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 att ett tredimensionellt (3D) objekt kan konstrueras och lagras i grafikminnet kort eller grafikhårdvara. Detta gör att en OpenGL® VBO kan renderas mycket snabbt och att använda mycket färre systemresurser än andra tekniker som använder omedelbar lägesritning. Utöver ökningen i hastighet och minskningen av grafikoverhead, är en OpenGL® VBO också en dynamisk datastruktur – till skillnad från en OpenGL®-visningslista – som kan ändras när den väl finns 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. Den omfattar den grundläggande funktionaliteten hos en vertexarray, eftersom informationen för geometrin – inklusive vertexkoordinater, normaler och färg – alla kan lagras i en strukturerad matris som kan skickas till OpenGL® för bearbetning. Till skillnad från en vertexarray lagras dock en OpenGL® VBO på serversidan av renderaren och behöver inte ständigt komma åt klientsidan för vertexinformationen.

Genom att tillåta att VBO:n lagras i grafikminne, tar den också över några av egenskaperna hos en visningslista. Den stora skillnaden är att en OpenGL® VBO kan modifieras och en visningslista inte. Dessutom kopieras inte VBO nödvändigtvis till grafikminnet som en visningslista skulle vara, så endast en datastruktur behöver finnas i minnet.

När en OpenGL® VBO äntligen renderas är avståndet från grafikminnet där det är lagrat och grafikprocessorn (GPU) mycket litet, vilket möjliggör mycket snabb rastrering utan att behöva gå igenom långsammare systemhårdvara först. I vissa fall stöds dock inte användningen av VBO 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 inkompatibelt med vissa grafikkort.

Det finns några metoder som kan hjälpa till att optimera hur en OpenGL® VBO behandlas när den används. En av dessa är att ge tips till grafikkortet, eller till OpenGL®, för att hjälpa till att bestämma var VBO:n ska finnas i minnet. Beroende på de tips som ges kan VBO:n lagras direkt i grafikminnet på grafikkortet, eller kan lagras i systemets huvudminne (RAM) om det anses nödvändigt.