Ce este un OpenGL® VBO?

Când utilizați bibliotecile de grafică pe computer Open Graphics Library® (OpenGL®) pentru programarea computerelor, un obiect buffer vertex (VBO) este o structură de date care permite construirea și stocarea unui obiect tridimensional (3D) în memoria graficelor. card sau hardware grafic. Acest lucru permite ca un OpenGL® VBO să fie redat foarte rapid și să utilizeze mult mai puține resurse de sistem decât alte tehnici care folosesc desenul în mod imediat. Pe lângă câștigurile în viteză și reducerea supraîncărcării grafice, un OpenGL® VBO este, de asemenea, o structură de date dinamică – spre deosebire de o listă de afișare OpenGL® – care poate fi schimbată odată ce este în memorie. Conceptul unui OpenGL® VBO a început de fapt cu producătorii de hardware care au inclus inițial – sub diferite nume – un tip similar de funcționalitate ca o extensie a bibliotecilor OpenGL® care ulterior a fost standardizată de OpenGL® Architecture Review Board (ARB).

Un OpenGL® VBO este practic o combinație de alte două tipuri de structuri de date OpenGL®. Acesta cuprinde funcționalitatea de bază a unui tablou de vârfuri, deoarece informațiile pentru geometrie – inclusiv coordonatele vârfurilor, normalele și culoarea – pot fi toate stocate într-o matrice structurată care poate fi transmisă la OpenGL® pentru procesare. Spre deosebire de o matrice de vârfuri, totuși, un OpenGL® VBO este stocat pe partea de server a rendererului și nu trebuie să acceseze în mod constant partea client pentru informațiile de vârf.

Permițând stocarea VBO-ului în memoria grafică, acesta preia, de asemenea, unele dintre proprietățile unei liste de afișare. Diferența majoră este că un OpenGL® VBO poate fi modificat și o listă de afișare nu. În plus, VBO nu este neapărat copiat în memoria grafică, așa cum ar fi o listă de afișare, așa că trebuie să fie prezentă o singură structură de date în memorie.

Când un OpenGL® VBO este în sfârșit redat, distanța de la memoria grafică în care este stocat și unitatea de procesare grafică (GPU) este foarte mică, permițând rasterizare foarte rapidă, fără a fi nevoie să treceți mai întâi prin hardware-ul sistemului mai lent. În unele cazuri, totuși, utilizarea VBO-urilor nu este acceptată de hardware-ul plăcii grafice. Acest lucru poate duce la probleme de programare care elimină orice beneficii suplimentare din utilizarea unui VBO sau a unui program care va fi incompatibil cu unele plăci grafice.

Există câteva metode care pot ajuta la optimizarea modului în care este tratat un OpenGL® VBO atunci când este utilizat. Unul dintre acestea este de a oferi indicii pentru placa grafică sau pentru OpenGL®, pentru a ajuta la determinarea locului în care VBO ar trebui să fie localizat în memorie. În funcție de indicațiile furnizate, VBO poate fi stocat direct în memoria grafică de pe placa grafică sau poate fi stocat în memoria principală cu acces aleatoriu (RAM) a sistemului, dacă se consideră necesar.