Ce sunt tampoanele OpenGL®?

Bufferele OpenGL® sunt zone din memoria computerului care sunt folosite pentru a stoca secvențe de informații, astfel încât să poată fi accesate foarte rapid și ușor, fără a fi nevoie să recalculăm datele de fiecare dată. Deși, la fel ca în programarea normală a computerului, tampoanele OpenGL® sunt practic doar blocuri consecutive de memorie alocată computerului, OpenGL® însuși structurează de fapt tampoanele în cadrul unui program, definind ce tip de informații vor fi păstrate în buffer, astfel încât anumite optimizări să poată fi utilizate. Există mai multe tipuri de buffere OpenGL®, inclusiv framebuffer-uri, pixel-buffer-uri și vertex-buffer-uri, pentru a numi doar câteva. Una dintre caracteristicile importante ale bufferelor sub OpenGL® este că acestea pot fi stocate în zone de memorie unde accesul la informațiile din buffer poate fi mai rapid decât în ​​mod normal. Cantitatea de utilizare prevăzută pentru un buffer OpenGL® poate ajuta la determinarea locului în care este de fapt stocat tamponul, utilizarea fiind definită prin declararea tamponului ca static, dinamic sau stream.

Unul dintre avantajele utilizării bufferelor OpenGL® este că acestea pot fi localizate în memorie care este accesată foarte rapid. Tipuri importante de buffere, cum ar fi framebuffer-urile, pot fi de fapt plasate direct în memoria plăcii grafice utilizate. Aceasta înseamnă că informațiile pot fi transmise direct din buffer către unitatea de procesare grafică (GPU) fără a fi nevoie să călătorească de la o placă hardware fizică la alta. Mutarea informațiilor brute, cum ar fi un ecran pre-redat în interiorul unui framebuffer, într-o altă locație de memorie fără niciun tip de procesare este o tehnică cunoscută sub numele de blitting și este una dintre cele mai rapide moduri de a muta informațiile în memorie.

Există mai multe tipuri de buffer-uri OpenGL®, deși fiecare este într-adevăr doar un bloc de memorie. Unul dintre cele mai utilizate este numit framebuffer. Un framebuffer deține informațiile necesare pentru a afișa cadrul curent pe dispozitivul de afișare. Informațiile din interiorul unui framebuffer sunt ordonate în același mod ca memoria folosită pentru a controla ceea ce afișează monitorul. Aceasta înseamnă că, dacă un framebuffer este localizat pe o placă grafică, atunci imaginea poate fi transferată pe ecran aproape instantaneu, deși este nevoie de timp pentru a reda scena în buffer.

Alte tipuri de buffer-uri OpenGL®, cum ar fi un buffer vertex, pot deține secvențe întregi de informații. Aceste tipuri de buffer-uri sunt folosite pentru a păstra blocuri secvențiale de informații care ar putea trebui accesate sau modificate de mai multe ori în fiecare secundă. În plus, tampoanele OpenGL® în sine pot fi adesea transmise ca argumente unor funcții care pot profita de starea ordonată a tamponului și pot efectua calcule foarte rapid.