OpenGL
Avtor | Silicon Graphics Inc. |
---|---|
Razvijalec | Khronos Group |
Stabilna izdaja | 31 julij 2017 |
Tip | programski vmesnik |
Spletno mesto | http://www.opengl.org/ |
OpenGL (angleško Open Graphics Library) je specifikacija standarda, ki določa programski vmesnik za pisanje računalniških programov, ki prikazujejo 3D in 2D računalniško grafiko. Pri programiranju z OpenGL lahko uporabljamo katerikoli programski jezik, prav tako pa OpenGL deluje na več platformah. Vmesnik sestavlja več kot 250 funkcij, ki omogočajo izrisovanje kompleksnih 3D scen sestavljenih iz preprostih osnovnih geometričnih oblik. OpenGL so leta 1992 razvili pri podjetju Silicon Graphics Inc. (SGI) in je priljubljen v industriji računalniških iger. Veliko se uporablja tudi pri računalniško podprtem načrtovanju, v navidezni resničnosti, znanstvenih vizualizacijah, vizualizacijah informacij ter letalskih in drugih simulacijah.
Zasnova
[uredi | uredi kodo]OpenGL služi dvema namenoma:
- Poenostavitvi dela z različnimi grafičnimi pospeševalniki, tako da programerju ponuja en sam enoten vmesnik
- Skrivanju razlik v strojni opremi, tako da od implementacij zahteva polno podporo za OpenGL (če ne gre drugače s programskim posnemanjem)
OpenGL v osnovi deluje tako, da sprejema osnovne elemente kot so točke, daljce in mnogokotnike, ter jih pretvarja v slikovne pike. To delo opravlja grafični cevovod, ki je znan kot avtomat OpenGL (angl. OpenGL state machine). Večina ukazov OpenGL v grafični cevovod pošilja osnovne elemente, ali pa določajo, kako cevovod obdeluje osnovne elemente. Pred izidom OpenGL 2.0 je vsaka stopnja cevovoda opravljala fiksno določeno delo in je bila nastavljiva le v zelo majhni meri. Od OpenGL 2.0 dalje je na voljo več stopenj, ki so s pomočjo jezika GLSL povsem programabilne.
OpenGL je nizko-novojski proceduralni programski vmesnik, ki programerju omogoča, da do potankosti nadzoruje vsak korak, ki je potreben za izris scene. Nizko-nivojska zasnova programerju daje večjo svobodo pri implementaciji novih algoritmov za izrisovanje, a zahteva dobro poznavanje grafičnega cevovoda.
OpenGL je v svoji zgodovini v precejšnji meri vplival na razvoj grafičnih pospeševalnikov. Promoviral je osnovno raven funkcionalnosti, ki je danes vsakdanja v strojni opremi, ki je na voljo uporabnikom:
- Osnovni elementi: rasterizirane točke, daljice in mnogokotniki
- Cevovod za preoblikovanje in osvetljevanje
- Medpomnilnik Z za globino
- Preslikovanje tekstur
- Alfa-mešanje
Kratek opis obdelave v grafičnem cevovodu bi lahko bil:
- Vrednostenje polinomskih funkcij, ki določajo vhode, ki so približki krivuljam in geometriji površin.
- Operacije nad oglišči (angl. vertex), ki oglišča preoblikujejo in jih osvetlijo glede na njihov material. Tudi odsek nevidnih delov scene, s čimer se dobi vidni volumen.
- Rasterizacija ali pretvorba predhodnih podatkov v slikovne pike. Mnogokotniki so s pomočjo algoritmov za interpolacijo predstavljeni z ustrezno barvo.
- Operacije nad delčki (angl. fragment), na primer posodabljanje vrednosti glede na vhodne in predhodno shranjene globinske vrednosti ali kombinacije barv.
- Na koncu so delčki vstavljeni v slikovni medpomnilnik.
Veliko modernih grafičnih pospeševalnikov ponuja funkcionalnost, ki je precej nad zgoraj omenjeno osnovo, vendar so te nove zmožnosti v splošnem le izboljšave osnovnega cevovoda in ga radikalno ne spreminjajo.