Co to jest OpenGL® VBO?

Podczas korzystania z bibliotek grafiki komputerowej Open Graphics Library® (OpenGL®) do programowania komputerów, obiekt bufora wierzchołków (VBO) jest strukturą danych, która umożliwia konstruowanie trójwymiarowego (3D) obiektu i przechowywanie go w pamięci grafiki karta lub sprzęt graficzny. Dzięki temu OpenGL® VBO może być renderowany bardzo szybko i zużywać znacznie mniej zasobów systemowych niż inne techniki wykorzystujące rysowanie w trybie natychmiastowym. Oprócz zwiększenia szybkości i zmniejszenia obciążenia graficznego, OpenGL® VBO jest również dynamiczną strukturą danych — w przeciwieństwie do listy wyświetlania OpenGL® — którą można zmienić, gdy znajduje się w pamięci. Koncepcja OpenGL® VBO w rzeczywistości zaczęła się od producentów sprzętu, którzy pierwotnie uwzględnili — pod różnymi nazwami — podobny rodzaj funkcjonalności jako rozszerzenie bibliotek OpenGL®, które później zostało ustandaryzowane przez OpenGL® Architecture Review Board (ARB).

OpenGL® VBO w zasadzie jest kombinacją dwóch innych typów struktur danych OpenGL®. Obejmuje podstawową funkcjonalność tablicy wierzchołków, ponieważ informacje dotyczące geometrii — w tym współrzędne wierzchołków, normalne i kolor — mogą być przechowywane w ustrukturyzowanej tablicy, którą można przesłać do OpenGL® w celu przetworzenia. Jednak w przeciwieństwie do tablicy wierzchołków, OpenGL® VBO jest przechowywany po stronie serwera renderującego i nie musi stale uzyskiwać dostępu do informacji o wierzchołkach po stronie klienta.

Umożliwiając przechowywanie VBO w pamięci graficznej, przejmuje również niektóre właściwości listy wyświetlania. Główna różnica polega na tym, że OpenGL® VBO można modyfikować, a lista wyświetlania nie. Ponadto VBO niekoniecznie jest kopiowane do pamięci graficznej, tak jak byłaby to lista wyświetlania, więc tylko jedna struktura danych musi być obecna w pamięci.

Gdy OpenGL® VBO jest ostatecznie renderowany, odległość od pamięci graficznej, w której jest przechowywana, i procesora graficznego (GPU) jest bardzo mała, co pozwala na bardzo szybką rasteryzację bez konieczności wcześniejszego przechodzenia przez wolniejszy sprzęt systemowy. Jednak w niektórych przypadkach użycie VBO nie jest obsługiwane przez sprzęt karty graficznej. Może to prowadzić do problemów programistycznych, które usuwają wszelkie dodatkowe korzyści z używania VBO lub programu, który będzie niekompatybilny z niektórymi kartami graficznymi.

Istnieje kilka metod, które mogą pomóc zoptymalizować sposób traktowania OpenGL® VBO podczas używania. Jednym z nich jest dostarczenie wskazówek do karty graficznej lub OpenGL®, aby pomóc określić, gdzie VBO powinno znajdować się w pamięci. W zależności od dostarczonych wskazówek, VBO może być przechowywany bezpośrednio w pamięci graficznej na karcie graficznej lub może być przechowywany w głównej pamięci o dostępie swobodnym (RAM) systemu, jeśli uzna to za konieczne.