čo je to opengl a na čo sa používa?

  • opengl ako graficka kniznica (porovnat s directx)
  • pouziva sa v: hrach, filmoch, 3d modelling / cad nastroje, cgi
  • webgl a opengl es
  • pouzivame opengl 3.2+ a porovnat s immediate modeom

OpenGL (podobne ako DirectX) je grafiká knižnica, ktorá sa používa na interaktívne renderovanie 3D grafiky v hrách, filmoch a v 2D/3D modelovacích nastrojoch (Blender, Maya, 3DS Max alebo AutoCAD).
To znamená, že OpenGL definuje rozhranie a spôsob, akým môžeme komunikovať s grafickým procesor ako ho prinútiť robiť veci, ktoré nám pomôžu nakresliť obrázok.

Renderovanie je proces vytvorenia snímku z 2D a 3D modelov za pomoci počítača. Tento proces zvyčajne prebieha na špeciálnom grafickom akcelerátore, ktorý nazývame aj GPU (grafická karta), ktorý je špeciálne navrhnutý a optimalizovaný práve na úlohy 3D rendrovania. Existujú aj softwareové implementácie OpenGL, ktoré nevyžadujú grafický procesor, ale zvyčajne majú nižšiu výkonnosť ako GPU. Príkladom takej knižnice je Mesa 3D. Teda na modernú a výkonnú 3D grafiku dnes potrebujeme vyhradený grafický akcelerátor.

OpenGL je multiplatformový software (na rozdiel od DirectX), takže nie je viazaný na konkrétny programovací jazyk ani na konkrétnu platformu (OpenGL aplikácia beží aj na Windowse aj na Linuxe, dokiaľ ovládače cieľovej platformy OpenGL podporujú; DirectX aplikácie bežia iba pod Windowsom, pretože na Linux neexistujú ovládače, ktoré by DirectX podporovali).

OpenGL nie je herný engine, zvukový engine ani herný editor. OpenGL sa nestará o vstup od užívateľa, o zvuk, o modelovanie alebo skriptovanie hry. Zaoberá sa iba a iba komunikáciou s grafickou kartou a činnosťami s tým spojenými.

OpenGL ES je verzia OpenGL, ktorá ma určité limitácie a používa sa v malých vstavaných systémoch ako sú smartphony, tablety, raspberry pi, herné konzoly a podobné zariadenia.

WebGL je Javascriptové API vychádzajúce z OpenGL ES. Používa sa na tvorbu interaktívnych 3D aplikácii vo webovom prehliadači. Príkladom takej hry je Agar.IO, HexGL a podobné.

Nové verzie OpenGL su


Špecifikácia OpenGL nehovorí nič o téme získavania kresliacich kontextov platformy. Túto problematiku necháva čisto na okennom systéme, ktorý sa o získanie kontextu postará. Takisto nerieši vstup z klávesnice, myši alebo gamepadu a ani zvul. OpenGL je teda rozhranie, ktoré slúži iba na vykreslovanie grafiky.


Mnohí zrejem tušíte, že OpenGL má niečo spoločné s hrami a grafikou a tak to aj naozaj je. OpenGL je grafické API. API je skratka pre aplikačné rozhranie a to v podstate znamená, že to je kopa funkcií, ktoré môžeme volať aby sme vykonali určité veci. Keďže OpenGL je grafické API, má prevažne funkcie, ktoré používame ak chceme robiť niečo s grafikou.

Grafika a úlohy spojené s ňou sa v dnešnej dobe riešia na špeciálnych čipoch, ktoré nazývame GPU a sú osadené na grafických kartách.

OpenGL nám teda umožnuje komunikovať a zadávať prácu grafickej karte, ktorú máme v počitači, v mobiloch alebo v nejakom inom zariadení.

OpenGL je ale iba jedno z mnohých rozhraní, ktoré na prácu s grafickou kartou môžeme použiť. Okrem neho je tu ešte Direct3D, Vulkan, Metal a nejaké ďalšie.

Čo OpenGL nie je?

OpenGL ale nie je knižnica, framework alebo engine. OpenGL ako taký je iba špecifikácia, nedefinuje žiaden kód, žiadne inštrukcie, žiaden program. Iba hovorí o tom aké funkcie existujú, ake prijímajú parametre, akým spôsobom vrátia výsledok a v akých prípadoch môžu nastať aké chyby.

Rovnako sa OpenGL nestará a ani nedefinuje spôsoby vytvorenie okna, načítania vstupu z klávesnice a myši alebo prehrávania zvukových efektov a hudby.

O vytvorenie okna sa stará okenný systém, ku ktorému môžeme pristupovať pristupovať pomocou nejakej knižnice ako napríklad GLFW. O vstup sa môže starať taktiež okenný systém alebo môžeme pristupovať k zariadeniam vstupu taktiež cez nejaké knižnice, ktoré sú na to určené (http://gainput.johanneskuhlmann.de/).

O prehrávanie hudby a zvukových efektov sa stará takzvaný zvukový engine (napríklad FMOD).

Kde sa dá stiahnuť OpenGL?

OpenGL sa nedá stiahnúť. Je to iba špecifikácia, ktorej implementácia (teda jej kód) sa nachádza v ovládači grafickej karty. Z toho vyplýva, že počítač, ktorý nemá grafickú kartu alebo nemá ovládače, ktoré OpenGL podporujú nemôže spusiť OpenGL aplikáciu.

Takisto z toho vyplýva, že jednotlivé implementácie OpenGL môžu byť trochu odlišné, keďže grafické karty a ich ovládače, v ktorých je OpenGL implementované vyrábajú rôzne firmy (ako napríklad NVIDIA, Intel alebo AMD).

Jednou z výhod OpenGL je to, že je podporované na viacerých platformách ako napríklad Window, Mac OS, Linux ale aj v mobilných zarideniach ako Android telefóny, IPhony a aj dokonca vo webových prehliadačoch. To samozrejme ale nerobí OpenGL automaticky lepším API ako je Direct3D.

Čo je to moderné OpenGL?

Ak sa bavíme o "modernom OpenGL" obyvkle máme na mysli OpenGL 3.3 a novšie. Dôvod pre to je taký, že staršie verzie OpenGL boli navrhnuté a fungovali úplne odliše od toho ako funguje OpenGL a iné novšie grafické rozhrania dnes.

V pôvodnom OpenGL bolo mnoho featur (napríklad osvetlenie scény) zabudovaných priamo do OpenGL. Osvetlenie scény sa napríklad zapínalo spôsobom, že sme nastavili premennú OPENGL_LIGHTING na true. To je na jednej strane veľmi jednoduché ale na druhej strane veľmi obmedzujúce.

Hlavným rozdielom medzi pôvodným a moderným OpenGL je programovateľná grafická pipelinena a shadery. Shader je špecíalny program, ktorý sa spúšťa na grafickej krate (nie na CPUčku) a počíta najrôznejšie veci. Zvyčajne sú to tiene, svetlo, odrazy a efekty materiálov. Post-process efekty ako napríklad DOF, chromatická aberácia alebo aj anti-aliasing. Pri viac informácií ohľadom toho ako shadery fungujú si pozrite video, ktoré je venované iba im a odkaz na neho je v popise.

results matching ""

    No results matching ""