Mis on OpenGL® puhvrid?

OpenGL® puhvrid on arvutimälus olevad alad, mida kasutatakse teabejadade salvestamiseks, nii et neile pääseb väga kiiresti ja lihtsalt juurde, ilma et oleks vaja andmeid iga kord ümber arvutada. Kuigi nagu tavalises arvutiprogrammeerimises, on OpenGL®-i puhvrid põhimõtteliselt lihtsalt eraldatud arvutimälu järjestikused plokid, struktureerib OpenGL® ise puhvrid programmi sees, määratledes, millist tüüpi teavet puhvris hoitakse, et saaks kasutada teatud optimeerimisi. OpenGL®-i puhvreid on mitut tüüpi, sealhulgas kaadripuhvrid, pikslipuhvrid ja tipupuhvrid, et nimetada vaid mõnda. OpenGL®-i puhvrite üks olulisi omadusi on see, et neid saab salvestada mälupiirkondadesse, kus juurdepääs puhvris olevale teabele võib olla tavalisest kiirem. OpenGL®-i puhvri kavandatud kasutusmaht võib aidata kindlaks teha, kus puhvrit tegelikult hoitakse, kusjuures kasutusala määratletakse puhvri staatiliseks, dünaamiliseks või voogeks deklareerimisega.

Üks OpenGL®-i puhvrite kasutamise eeliseid on see, et need asuvad mälus, millele pääseb juurde väga kiiresti. Olulisi puhvrite tüüpe, näiteks kaadripuhvreid, saab tegelikult paigutada otse kasutatava graafikakaardi mällu. See tähendab, et teavet saab edastada otse puhvrist graafikaprotsessorisse (GPU), ilma et peaksite ühelt füüsiliselt riistvaraplaadilt teisele liikuma. Toorteabe, näiteks kaadripuhvris oleva eelrenderdatud ekraani teisaldamine teise mälukohta ilma igasuguse töötlemiseta on tehnika, mida nimetatakse blittingiks ja see on üks kiiremaid viise teabe mälus teisaldamiseks.

OpenGL®-i puhvreid on mitut tüüpi, kuigi igaüks neist on tegelikult vaid mäluplokk. Ühte enim kasutatavat nimetatakse kaadripuhvriks. Kaadripuhver sisaldab teavet, mis on vajalik praeguse kaadri kuvamiseks kuvaseadmele. Kaadripuhvris olev teave on järjestatud samamoodi nagu mälu, mida kasutatakse monitori kuvatavate asjade juhtimiseks. See tähendab, et kui graafikakaardil asub kaadripuhver, saab kujutise peaaegu koheselt ekraanile kuvada, kuigi stseeni esmalt puhvrisse renderdamine võtab aega.

Muud tüüpi OpenGL® puhvrid, näiteks tipupuhver, võivad hoida terveid teabejadasid. Seda tüüpi puhvreid kasutatakse järjestikuste teabeplokkide hoidmiseks, millele võib olla vaja juurde pääseda või mida tuleb sekundis mitu korda muuta. Lisaks saab OpenGL® puhvreid ise sageli argumentidena edastada funktsioonidele, mis saavad puhvri järjestatud olekut ära kasutada ja arvutusi teha väga kiiresti.