Czym są bufory OpenGL®?

Bufory OpenGL® to obszary w pamięci komputera, które służą do przechowywania sekwencji informacji, dzięki czemu można uzyskać do nich bardzo szybki i łatwy dostęp bez konieczności ponownego przeliczania danych za każdym razem. Chociaż, tak jak w normalnym programowaniu komputerowym, bufory OpenGL® są w zasadzie tylko kolejnymi blokami przydzielonej pamięci komputera, sam OpenGL® faktycznie tworzy strukturę buforów w programie, definiując, jaki rodzaj informacji będzie przechowywany w buforze, aby można było zastosować pewne optymalizacje. Istnieje kilka typów buforów OpenGL®, w tym bufory ramki, bufory pikseli i bufory wierzchołków, aby wymienić tylko kilka. Jedną z ważnych cech buforów w OpenGL® jest to, że mogą być przechowywane w obszarach pamięci, w których dostęp do informacji w buforze może być szybszy niż normalnie. Zamierzona ilość wykorzystania bufora OpenGL® może pomóc w określeniu, gdzie bufor jest faktycznie przechowywany, przy użyciu zdefiniowanym przez zadeklarowanie bufora jako statycznego, dynamicznego lub strumieniowego.

Jedną z zalet korzystania z buforów OpenGL® jest to, że można je zlokalizować w pamięci, do której uzyskuje się bardzo szybki dostęp. Ważne typy buforów, takie jak bufory ramek, można w rzeczywistości umieścić bezpośrednio w pamięci używanej karty graficznej. Oznacza to, że informacje mogą być przekazywane bezpośrednio z bufora do procesora graficznego (GPU) bez konieczności przemieszczania się z jednej fizycznej płyty sprzętowej na drugą. Przenoszenie surowych informacji, takich jak wstępnie wyrenderowany ekran wewnątrz bufora ramki, do innej lokalizacji w pamięci bez żadnego przetwarzania, to technika znana jako blitting i jest to jeden z najszybszych sposobów przenoszenia informacji w pamięci.

Istnieje kilka typów buforów OpenGL®, chociaż każdy z nich jest tak naprawdę tylko blokiem pamięci. Jednym z najczęściej używanych jest bufor ramki. Bufor ramki przechowuje informacje niezbędne do wyświetlenia bieżącej ramki na urządzeniu wyświetlającym. Informacje w buforze ramki są uporządkowane w taki sam sposób, jak pamięć używana do kontrolowania tego, co wyświetla monitor. Oznacza to, że jeśli bufor ramki znajduje się na karcie graficznej, obraz może zostać wyświetlony na ekranie niemal natychmiast, chociaż najpierw renderowanie sceny do bufora zajmuje trochę czasu.

Inne typy buforów OpenGL®, takie jak bufor wierzchołków, mogą przechowywać całe sekwencje informacji. Tego typu bufory są używane do przechowywania kolejnych bloków informacji, które mogą wymagać dostępu lub zmiany wiele razy na sekundę. Dodatkowo, same bufory OpenGL® mogą być często przekazywane jako argumenty do funkcji, które mogą wykorzystać uporządkowany stan bufora i bardzo szybko wykonać obliczenia.