Ce este un OpenGL® Vertex Buffer?

Un buffer de vârfuri Open Graphics Library® (OpenGL®) este o zonă a memoriei computerului aflată adesea direct pe o placă grafică care permite accesul foarte rapid la o serie de vârfuri și proprietățile acestora. Cel mai adesea, un buffer de vârf OpenGL® este utilizat pentru a crea un obiect tampon de vârf (VBO), permițând ca obiectele dintr-o scenă tridimensională (3D) să fie redate ca parte a unei liste de afișare și nu în modul imediat. Ocazional, totuși, un buffer de vârf poate fi folosit în afara unui VBO pentru a stoca informații despre un obiect sau pentru a facilita transformările pe modele complexe. Trebuie remarcat faptul că un buffer vertex nu trebuie să fie localizat în memoria plăcii grafice, deoarece poate fi alocat ca orice structură de date. Dacă bufferul OpenGL® vertex va fi utilizat ca parte a unui VBO, atunci placa grafică utilizată trebuie să accepte extensia specială OpenGL® VBO pentru a se asigura că tamponul este plasat în memoria grafică.

La cel mai elementar nivel, un buffer de vertex OpenGL® este doar un simplu buffer, o zonă alocată de memorie în care pot fi stocate datele. Devine un buffer de vârfuri atunci când o matrice de vârfuri este stocată în el. Un tablou de noduri OpenGL® este o matrice de structuri de date care definește toate proprietățile nodurilor individuale. Aceste informații pot include locațiile X, Y și Z ale vârfului în scena 3D, culoarea vârfului, normalul și alte proprietăți.

În redarea în modul imediat, comenzile OpenGL® sunt executate direct, așa cum sunt apelate din cadrul unui program. Nu este necesar în aceste cazuri să existe o matrice de vârfuri, deoarece comenzile pentru plasarea și desenarea unui vârf pot fi date direct hardware-ului, deși acest lucru poate cauza probleme serioase de performanță. Pentru redarea în mod non-immediată, informațiile despre un obiect sau model 3D trebuie mai întâi plasate într-o matrice de vârfuri, astfel încât să aibă o structură pe care OpenGL® o poate interpreta cu ușurință; acea matrice trebuie apoi stocată într-o zonă specială de memorie cunoscută sub numele de buffer de vertex OpenGL®.

În sine, tamponul de vârf nu are neapărat atribute speciale, în afară de a fi o colecție completă de informații utilizate pentru a desena un obiect. Când bufferul de vârf OpenGL® este convertit într-un obiect tampon de vârf OpenGL® prin extensia OpenGL, totuși, are loc o secvență specială de evenimente pentru a ajuta la optimizarea desenului obiectului definit în tamponul de vârf. Și anume, tamponul este alocat și stocat în memoria plăcii grafice, pe partea de server a configurației client-server pe care OpenGL® o folosește. De asemenea, unele calcule pot fi efectuate în avans pe VBO, astfel încât să poată fi redate cât mai repede posibil. În afara unui VBO, un buffer de vertex simplu nu primește de obicei acest tratament și poate fi alocat și utilizat ca orice alt tip de date.