Co to jest bufor wierzchołków OpenGL®?

Bufor wierzchołków Open Graphics Library® (OpenGL®) to obszar pamięci komputera często umieszczony bezpośrednio na karcie graficznej, który umożliwia bardzo szybki dostęp do szeregu wierzchołków i ich właściwości. Najczęściej bufor wierzchołków OpenGL® jest używany do tworzenia obiektu bufora wierzchołków (VBO), co pozwala na renderowanie obiektów w trójwymiarowej (3D) scenie jako części listy wyświetlania, a nie w trybie natychmiastowym. Czasami jednak bufor wierzchołków może być używany poza VBO do przechowywania informacji o obiekcie lub ułatwienia transformacji złożonych modeli. Należy zauważyć, że bufor wierzchołków nie musi znajdować się w pamięci karty graficznej, ponieważ można go alokować jak każdą strukturę danych. Jeśli bufor wierzchołków OpenGL® ma być używany jako część VBO, używana karta graficzna musi obsługiwać specjalne rozszerzenie OpenGL® VBO, aby zapewnić umieszczenie bufora w pamięci graficznej.

Na najbardziej podstawowym poziomie bufor wierzchołków OpenGL® jest po prostu prostym buforem, wydzielonym obszarem pamięci, w którym mogą być przechowywane dane. Staje się buforem wierzchołków, gdy przechowywana jest w nim tablica wierzchołków. Tablica wierzchołków OpenGL® to tablica struktur danych, która definiuje wszystkie właściwości poszczególnych wierzchołków. Informacje te mogą obejmować lokalizacje X, Y i Z wierzchołka w scenie 3D, kolor wierzchołka, normalne i inne właściwości.

W renderowaniu w trybie natychmiastowym polecenia OpenGL® są wykonywane bezpośrednio, gdy są wywoływane z poziomu programu. W takich przypadkach nie ma potrzeby posiadania tablicy wierzchołków, ponieważ polecenia umieszczania i rysowania wierzchołków mogą być przekazywane bezpośrednio do sprzętu, chociaż może to powodować poważne problemy z wydajnością. W przypadku renderowania w trybie nienatychmiastowym informacje o obiekcie lub modelu 3D należy najpierw umieścić w tablicy wierzchołków, aby miała strukturę, którą OpenGL® może łatwo zinterpretować; tablica ta musi być następnie przechowywana w specjalnym obszarze pamięci znanym jako bufor wierzchołków OpenGL®.

Sam bufor wierzchołków niekoniecznie ma jakieś specjalne atrybuty, poza tym, że jest kompletnym zbiorem informacji używanych do narysowania obiektu. Kiedy jednak bufor wierzchołków OpenGL® jest konwertowany na obiekt bufora wierzchołków OpenGL® przez rozszerzenie OpenGL, pojawia się specjalna sekwencja zdarzeń, która pomaga zoptymalizować rysowanie obiektu zdefiniowanego w buforze wierzchołków. Mianowicie bufor jest przydzielany i przechowywany w pamięci karty graficznej po stronie serwera w konfiguracji klient-serwer, której używa OpenGL®. Niektóre obliczenia można również wykonać z wyprzedzeniem w VBO, aby można je było renderować tak szybko, jak to możliwe. Poza VBO zwykły bufor wierzchołków zwykle nie jest tak traktowany i może być przydzielany i używany jak każdy inny typ danych.