I buffer OpenGL® sono aree nella memoria del computer che vengono utilizzate per memorizzare sequenze di informazioni in modo che sia possibile accedervi molto rapidamente e facilmente senza la necessità di ricalcolare i dati ogni volta. Sebbene, come nella normale programmazione per computer, i buffer OpenGL® siano fondamentalmente solo blocchi consecutivi di memoria del computer allocata, OpenGL® stesso struttura effettivamente i buffer all’interno di un programma definendo il tipo di informazioni che verranno mantenute all’interno del buffer in modo da poter utilizzare determinate ottimizzazioni. Esistono diversi tipi di buffer OpenGL® inclusi framebuffer, pixel buffer e vertex buffer per citarne solo alcuni. Una delle caratteristiche importanti dei buffer in OpenGL® è che possono essere archiviati in aree di memoria in cui l’accesso alle informazioni all’interno del buffer può essere più veloce del normale. La quantità di utilizzo prevista per un buffer OpenGL® può aiutare a determinare dove il buffer è effettivamente archiviato, con l’utilizzo definito dichiarando il buffer come statico, dinamico o stream.
Uno dei vantaggi dell’utilizzo dei buffer OpenGL® è che possono essere localizzati nella memoria a cui si accede molto rapidamente. Importanti tipi di buffer, come i framebuffer, possono essere effettivamente inseriti direttamente nella memoria della scheda grafica utilizzata. Ciò significa che le informazioni possono essere passate direttamente dal buffer all’unità di elaborazione grafica (GPU) senza dover viaggiare da una scheda hardware fisica all’altra. Spostare informazioni grezze, come uno schermo pre-renderizzato all’interno di un framebuffer, in un’altra posizione di memoria senza alcun tipo di elaborazione è una tecnica nota come blitting ed è uno dei modi più veloci per spostare le informazioni in memoria.
Esistono diversi tipi di buffer OpenGL®, sebbene ciascuno sia in realtà solo un blocco di memoria. Uno dei più usati è chiamato framebuffer. Un framebuffer contiene le informazioni necessarie per visualizzare il frame corrente sul dispositivo di visualizzazione. Le informazioni all’interno di un framebuffer sono ordinate allo stesso modo della memoria utilizzata per controllare ciò che il monitor visualizza. Ciò significa che, se un framebuffer si trova su una scheda grafica, l’immagine può essere proiettata sullo schermo quasi istantaneamente, anche se è necessario del tempo per eseguire prima il rendering della scena nel buffer.
Altri tipi di buffer OpenGL®, come un buffer di vertice, possono contenere intere sequenze di informazioni. Questi tipi di buffer vengono utilizzati per mantenere blocchi sequenziali di informazioni a cui potrebbe essere necessario accedere o modificare molte volte al secondo. Inoltre, gli stessi buffer OpenGL® possono spesso essere passati come argomenti a funzioni che possono sfruttare lo stato ordinato del buffer ed eseguire calcoli molto rapidamente.