S rozvojem poˇc´ıtaˇcov´e grafiky, kter´y zapoˇcal v 70.t´ych letech minul´eho stolet´ı se vyv´ıjely i grafick´e karty. Od 80.t´ych let se pak v poˇc´ıtaˇc´ıch vyuˇz´ıvaj´ı r˚uzn´e grafick´e symboly, ikony, obr´azky proto, aby byla usnadnˇena komunikace mezi ˇclovˇekem a poˇc´ıtaˇcem. Od 90.t´ych let roste popularita 3D grafiky reprezentovan´a hlavnˇe poˇc´ıtaˇcov´ymi hrami, ˇci pouˇz´ıv´an´ım CAD syst´em˚u. Nejen pro potˇreby tv˚urc˚u a uˇzivatel˚u poˇc´ıtaˇcov´ych her, se na trh dostaly grafick´e knihovny. V souˇcasnosti existuj´ı 2 masivnˇe pouˇz´ıvan´e grafick´e knihovny, a to OpenGL a DirectX.
4.2.1 DirectX
Vznik knihovny DirectX je spojen s rokem 1994, kdy na trh pˇrich´az´ı operaˇcn´ı syst´em Microsoft Windows 95. V dobˇe, kdy na poli osobn´ıch poˇc´ıtaˇc˚u jeˇstˇe pˇrevaˇzoval syst´em MS-DOS, kter´y umoˇzˇnoval pˇr´ım´y pˇr´ıstup k zaˇr´ızen´ım jako grafick´a karta, myˇs, kl´avesnice, apod.
zaˇcaly vznikat obavy z nov´eho operaˇcn´ıho syst´emu, kter´y jiˇz zaˇcal pouˇz´ıvat chr´anˇen´y model pamˇeti, kter´y omezoval pˇr´ıstup k zaˇr´ızen´ım. Proto se Microsoft pustil do v´yvoje knihovny DirectX, kter´a by umoˇzˇnovala program´ator˚um to, co starˇs´ı MS-DOS.
Prvn´ı verze DirectX byla nakonec vypuˇstˇena v z´aˇr´ı 1995 jako souˇc´ast Windows Game SDK. Knihovna DirectX tedy umoˇzˇnovala - poˇc´ınaje operaˇcn´ım syst´emem Windows 95 -pr´aci s multim´edii v syst´emu, zaˇcala se rovnˇeˇz vyuˇz´ıvat pro tvorbu poˇc´ıtaˇcov´ych her.
Zat´ımco ”konkurenˇcn´ı” knihovna OpenGL byla zamˇeˇrena na pˇrenositelnost, kompa-tibilitu a byla hodnˇe z´avisl´a na pouˇzit´em hardwaru, DirectX se vydala jin´ym smˇerem -specializovala se hlavnˇe na pouˇzit´ı ve 3D hr´ach. Direct3D tedy byla jak´asi ”light-weight”
knihovna podporuj´ıc´ı pouze syst´emy Windows, naproti tomu OpenGL se vyvinulo v ”cross-platform” knihovnu. Knihovna DirectX postupem ˇcasu pronikla i do hern´ıch konzol´ı jako napˇr. XBox.
V souˇcasn´e dobˇe se DirectX skl´ad´a z nˇekolika ˇc´ast´ı podle ´uˇcelu [19]:
• DirectX Graphics (souˇc´asti DirectDraw a Direct3D) - pro podporu 3D vykreslov´an´ı, grafiky
• DirectInput - podpora vstupn´ıch zaˇr´ızen´ı jako myˇs, joystick, apod.
• DirectPlay - podpora hran´ı v´ıce hr´aˇc˚u po s´ıti
• DirectSound - podpora pˇrehr´av´an´ı a z´aznamu zvuku
• DirectMusic - podpora pˇrehr´av´an´ı a zpracov´an´ı hudby
• DirectShow - podpora multimedi´aln´ıch aplikac´ı, pˇrehr´av´an´ı a tvorby videa a zvuku
• DirectSetup - n´astroj pro instalaci DirectX
• DirectX Media Objects - podpora pro tvorbu multimedi´aln´ıch efekt˚u, kodek˚u, apod.
V dobˇe psan´ı t´eto pr´ace se pˇripravuje vyd´an´ı verze DirectX11. Posledn´ı verz´ı knihovny DirectX, kter´a byla urˇcena pro operaˇcn´ı syst´emy Microsoft Windows XP, byla verze 9.0c.
S n´astupem operaˇcn´ıho syst´emu Microsoft Windows Vista pˇriˇsel i nov´y model WDDM (Windows Display Driver Model), kter´y jiˇz nen´ı zpˇetnˇe kompatibiln´ı se syst´emem Microsoft Windows XP, a souˇcasnˇe s n´ım i nov´a verze knihovny DirectX - DirectX 10. Zaj´ımavost´ı okolo knihovny DirectX je, ˇze verze DirectX 4.0 nebyla nikdy uvolnˇena, a tak verze 3.0 byla pˇr´ımo nahrazena verzi DirectX 5.0. Dalˇs´ı detaily lze naj´ıt v literatuˇre [19] ˇci [12].
Od verze 8.0 podporuje DirectX (resp. Direct3D) vykreslov´an´ı pomoc´ı shader˚u, k t´eto ˇ
cinnosti vyuˇz´ıv´a speci´aln´ı jazyk HLSL (High Level Shader Language). Shadery se daj´ı rozdˇelit na vertex shadery (zpracov´an´ı kaˇzd´eho vrcholu) a pixel shadery (zpravov´an´ı pixel˚u).
4.2.2 OpenGL
Knihovna OpenGL je v souˇcasn´e dobˇe pr˚umyslov´ym standardem pro v´yvoj grafick´ych apli-kac´ı specifikuj´ıc´ı multiplatformn´ı rozhran´ı. OpenGl nach´az´ı uplatnˇe pˇri tvorbˇe 3D aplikac´ı, her ˇci CAD syst´em˚u a jin´ych napˇr. vˇedeck´ych aplikac´ıch.
V 90.t´ych letech se do popˇred´ı na poli poˇc´ıtaˇcov´e grafiky dost´av´a konsorcium SGI (Si-licon Graphics), jehoˇz IRIS GL API se stalo de facto pr˚umyslov´ym standardem a zast´ınilo otevˇren´y standard PHIGS. SGI si brzy uvˇedomilo, ˇze IRIS GL se nen´ı schopen st´at otevˇren´ym - kv˚uli probl´em˚um s licencemi a patenty. Nav´ıc tato specifikace obsahovala i nˇeco nav´ıc, neˇz jen soubor funkc´ı pro pr´aci s 3D grafikou (napˇr. kl´avesnice, myˇs, pr´ace s okny). Tyto a jeˇstˇe dalˇs´ı aspekty (viz. [14]) vedly k vyd´an´ı standardu OpenGL.
OpenGL standardizovalo pˇr´ıstup ke grafick´emu hardwaru. S t´ım souvis´ı zv´yˇsen´ı poˇzadavk˚u na tvorbu ovladaˇc˚u grafick´eho hardware, protoˇze je potˇreba dodrˇzet specifikaci standardu.
Obrovsk´y pˇr´ınos OpenGL je tedy v tom, ˇze se pouˇz´ıv´a na r˚uzn´ych grafick´ych kart´ach od r˚uzn´ych v´yrobc˚u stejn´y zp˚usob komunikace s grafick´ym hardware, nav´ıc je OpenGL od poˇc´atku navrhov´ano jako multiplatformn´ı.
V roce 1992 spoleˇcnost SGI st´ala i za vznikem OpenGL Architecture Review Board (OpenGL ARB), coˇz je skupina spoleˇcnost´ı, kter´e mohou zasahovat do rozˇs´ıˇren´ı samotn´eho OpenGL standardu. Mohou napˇr. pˇrid´avat vlastn´ı konstanty, ˇci vytv´aˇret nov´e funkce. Pro-ces obohacov´an´ı standardu OpenGl o nov´a rozˇs´ıˇren´ı prob´ıh´a v nˇekolika kroc´ıch. Kaˇzd´y ˇclen m´a svou vlastn´ı zkratku, kter´a identifikuje navrhovan´e rozˇs´ıˇren´ı OpenGL standardu, napˇr.
nVidia pouˇz´ıv´a NV.
V prvn´ım kroku tedy nˇekter´y ze ˇclen˚u sdruˇzen´ı pˇrijde s navrhovan´ym vylepˇsen´ım (za n´azev vylepˇsen´ı se pˇrid´a zkratka navrhovatele). Pokud je navrhovan´e vylepˇsen´ı schv´aleno ostatn´ımi, st´av´a se z nˇej ve druh´e f´azi rozˇs´ıˇren´ı OpenGl a pˇrid´av´a se zkratka EXT. Po-kud je v dalˇs´ı iteraci otestov´ano a znovu schv´aleno, m˚uˇze rozˇs´ıˇren´ı proniknout do stan-dardu OpenGL, pak se st´av´a standardn´ım rozˇs´ıˇren´ım a dost´av´a zkratku ARB, tedy napˇr.GL_ARB_Multitexture. Rozˇs´ıˇren´ı pˇrin´aˇs´ı drobnou komplikaci pˇri vytv´aˇren´ı programu, protoˇze je potˇreba explicitnˇe ovˇeˇrit, zda je dan´e rozˇs´ıˇren´ı implementov´ano i na vlastn´ı gra-fick´e kartˇe, na n´ıˇz m´a aplikace fungovat.
Za zm´ınku stoj´ı fakt, ˇze standard OpenGL se nijak nezab´yv´a prac´ı s okny, se vstupnˇ e-v´ystupn´ımi zaˇr´ızen´ımi, tyto probl´emy jsou pˇrenech´any na rozˇsiˇruj´ıc´ıch knihovn´ach, napˇr.
GLU, GLUT, SDL.
V roce 2006 se pak OpenGL stalo souˇc´ast´ı konzorcia Khronos.
Knihovna OpenGL umoˇzˇnuje vykreslov´an´ı 5ti z´akladn´ıch primitiv. Jsou to: bod, ´useˇcka, polygon, bitmapa a pixmapa. OpenGL je zaloˇzeno na architektuˇre klient-server, tj. klient zad´av´a pˇr´ıkazy a server tyto vykon´av´a. Vykreslov´an´ı se dˇeje pomoc´ı tzv. graphics pipeline (grafick´y vykreslovac´ı ˇretˇezec). OpenGL je tedy stavov´y stroj, tzn. provede se v´ybˇer barvy,
Obr´azek 4.2: Graphics pipeline v OpenGL (pˇrevzato z [14])
s n´ıˇz se bude vykreslovat a tato barva je platn´a aˇz do doby, kdy je zmˇenˇena na jinou barvu. Zad´av´an´ı objekt˚u k vykreslen´ı prob´ıh´a tak, ˇze se vybere, jak´e primitivum se bude vykreslovat a pot´e se specifikuj´ı jednotliv´e body tohoto primitiva. Tento zp˚usob je zvl´aˇstˇe pro rozs´ahlejˇs´ı a komplexnˇejˇs´ı objekty v dan´e sc´enˇe nepohodln´y, proto byly zavedeny tzn.
Display listy, kter´e mohou obsahovat v´ıce primitiv k vykreslen´ı. Pot´e jiˇz nen´ı tˇreba volat vykreslov´an´ı jednotliv´ych primitiv, ale vol´a se pouze vykreslov´an´ı pˇrednastaven´ych display list˚u.
Stejnˇe jako Direct3D i OpenGL podporuje shadery. K tomu byl vyvinut jazyk GLSL
(OpenGL Shading Language). Chov´an´ı shader˚u je moˇzn´e tak´e popisovat pomoc´ı jazyka Cg.