Hvad er en OpenGL® Vertex Buffer?
En Open Graphics Library® (OpenGL®) vertexbuffer er et område af computerhukommelse, der ofte er placeret direkte på et grafikkort, der giver meget hurtig adgang til en række vertices og deres egenskaber. Oftest bruges en OpenGL® vertexbuffer til at oprette et vertexbufferobjekt (VBO), så objekter i en tredimensionel (3D) scene kan gengives som en del af en visningsliste og ikke i øjeblikkelig tilstand. Lejlighedsvis kan imidlertid en toppunktbuffer bruges uden for en VBO til at gemme information om et objekt eller for at hjælpe med at gøre transformationer lettere på komplekse modeller. Det skal bemærkes, at en toppunktbuffer ikke behøver at være placeret i grafikkortets hukommelse, fordi den kan allokeres som enhver datastruktur. Hvis OpenGL®-vertexbufferen vil blive brugt som en del af en VBO, skal det grafikkort, der bruges, understøtte den specielle OpenGL® VBO-udvidelse for at sikre, at bufferen placeres i grafikhukommelsen.
På det mest basale niveau er en OpenGL® vertexbuffer blot en simpel buffer, et tildelt hukommelsesområde, hvor data kan gemmes. Det bliver en toppunktbuffer, når en toppunktgruppe gemmes i den. En OpenGL®-vertex array er en matrix af datastrukturer, der definerer alle egenskaber for individuelle vertices. Disse oplysninger kan omfatte X-, Y- og Z-placeringerne af toppunktet i 3D-scenen, farven på toppunktet, de normale og andre egenskaber.
I øjeblikkelig tilstand gengivelse udføres OpenGL®-kommandoer direkte, som de kaldes fra et program. Det er unødvendigt i disse tilfælde at have en toppunktopstilling, fordi kommandoerne til placering og tegning af en toppunkt kan gives direkte til hardware, selvom dette kan forårsage alvorlige ydelsesproblemer. Ved gengivelse af ikke-øjeblikkelig tilstand skal informationen om et 3D-objekt eller model først placeres i en toppunktopstilling, så den har en struktur, som OpenGL® let kan fortolke; denne matrix skal derefter gemmes i et specielt hukommelsesområde kendt som en OpenGL® vertexbuffer.
I sig selv har toppunktbufferen ikke nødvendigvis andre specialattributter end at være en komplet samling af information, der bruges til at tegne et objekt. Når OpenGL® vertexbufferen konverteres til et OpenGL® vertexbufferobjekt gennem OpenGL-udvidelsen, forekommer der dog en speciel hændelsessekvens til at hjælpe med at optimere tegningen af det objekt, der er defineret i toppunktbufferen. Buffer er tildelt og gemt i hukommelse på grafikkort på serversiden af klientserveropsætningen, som OpenGL® bruger. Nogle beregninger kan også udføres på forhånd på VBO, så det kan gengives så hurtigt som muligt. Uden for en VBO modtager en almindelig toppunktbuffer normalt ikke denne behandling og kan allokeres og bruges som enhver anden datatype.