Kas yra OpenGL® Vertex buferis?

Open Graphics Library® (OpenGL®) viršūnių buferis yra kompiuterio atminties sritis, dažnai esanti tiesiai grafikos plokštėje, leidžianti labai greitai pasiekti viršūnių masyvą ir jų savybes. Dažniausiai OpenGL® viršūnių buferis naudojamas viršūnių buferio objektui (VBO) sukurti, todėl trimatės (3D) scenos objektai gali būti pateikiami kaip rodymo sąrašo dalis, o ne tiesioginiu režimu. Tačiau kartais viršūnių buferis gali būti naudojamas ne VBO, kad būtų galima saugoti informaciją apie objektą arba palengvinti sudėtingų modelių transformacijas. Pažymėtina, kad viršūnių buferis nebūtinai turi būti grafinės plokštės atmintyje, nes jis gali būti paskirstytas kaip ir bet kuri duomenų struktūra. Jei „OpenGL®“ viršūnių buferis bus naudojamas kaip VBO dalis, naudojama vaizdo plokštė turi palaikyti specialų „OpenGL®“ VBO plėtinį, kad buferis būtų patalpintas grafinėje atmintyje.

Paprasčiausiu lygiu OpenGL® viršūnių buferis yra tik paprastas buferis, skirta atminties sritis, kurioje gali būti saugomi duomenys. Jis tampa viršūnių buferiu, kai jame saugomas viršūnių masyvas. OpenGL® viršūnių masyvas yra duomenų struktūrų masyvas, apibrėžiantis visas atskirų viršūnių savybes. Ši informacija gali apimti viršūnių X, Y ir Z vietas 3D scenoje, viršūnės spalvą, normalias ir kitas savybes.

Atvaizduojant tiesioginį režimą, OpenGL® komandos vykdomos tiesiogiai, kai jos iškviečiamos iš programos. Tokiais atvejais nebūtina turėti viršūnių masyvo, nes viršūnių išdėstymo ir piešimo komandos gali būti duotos tiesiogiai aparatūrai, nors tai gali sukelti rimtų veikimo problemų. Netiesioginio režimo atvaizdavimui informaciją apie 3D objektą arba modelį pirmiausia reikia įdėti į viršūnių masyvą, kad jis turėtų struktūrą, kurią OpenGL® galėtų lengvai interpretuoti; tada tas masyvas turi būti saugomas specialioje atminties srityje, vadinamoje OpenGL® viršūnių buferiu.

Pats viršūnių buferis nebūtinai turi jokių specialių atributų, išskyrus tai, kad tai yra visas informacijos rinkinys, naudojamas piešti objektui. Tačiau kai OpenGL® viršūnių buferis konvertuojamas į OpenGL® viršūnių buferio objektą naudojant OpenGL plėtinį, įvyksta speciali įvykių seka, padedanti optimizuoti viršūnių buferyje apibrėžto objekto piešimą. Būtent buferis yra paskirstomas ir saugomas grafikos plokštės atmintyje, kliento-serverio sąrankos, kurią naudoja OpenGL®, serverio pusėje. Kai kuriuos skaičiavimus taip pat galima atlikti iš anksto naudojant VBO, kad būtų galima juos pateikti kuo greičiau. Už VBO ribų paprastam viršūnių buferiui paprastai netaikomas šis apdorojimas, todėl jį galima priskirti ir naudoti kaip ir bet kurį kitą duomenų tipą.