Úvod
V reakci na výše uvedený článek se vytvořila klasická„náboženská válka“ typu MS Windows proti Linuxu. Strany se rozdělily na OpenGL programátory a na osoby v každém druhém příspěvku prohlašující (ne všichni!): Slyšel jsem…, Moc tomu nerozumím…, Nejsem expert… a podobně. Ti druzí jmenovaní nějakým způsobem mimo jiné vygenerovali, že OpenGL, na rozdíl od DirectX, vytváří jeden člověk – s prominutím NEJVĚTŠÍ BLBOST, JAKOU JSEM KDY SLYŠEL. V průběhu článku vysvětlím proč, zatím jen tolik, že o tom, co se skrývá pod pojmem DirectX, rozhoduje výhradně jediná firma (Microsoft) a autorem OpenGL může být kdokoli, jehož implementace splňuje OpenGL standard a projde sérií testů. Dohled nad vývojem tohoto standardu má konsorcium ARB, do kterého patří firmy jako SGI, DEC, HP, IBM, Intel, Microsoft, Sun Microsystems a další.
Moje zkušenosti s 3D grafikou
Já také nejsem expert :-], i když mi někdy připadá, že mě za něj někteří lidé považují. S OpenGL jsem se poprvé (jako programátor) setkal léta páně 2002. Po půl roce jsem jako „Vánoční dárek“ (to by bylo na dlouho) dostal doménu http://nehe.opengl.cz/ a byl mezi prvními, kteří o OpenGL začali psát v češtině (v současnosti vychází kvalitní seriály i na rootu). Tento web aktuálně obsahuje přes sto stránek o celkové velikosti cca. 2,8 MB (texty a skripty – ne FrontPage slátaniny). Témata jdou od absolutních základů po velmi pokročilé techniky. Jelikož jsem autorem/překladatelem cca. 70 %, dá se říci, že OpenGL tak trochu rozumím… (Skrytou reklamu máme zdárně za sebou :-)
Logo OpenGL
Nicméně, horší to bude s DirectX částí, protože jsem o něm četl pouze jednu knihu [1], která ale není zrovna kvalitní. Tímto nechci nikoho poškodit, radím pouze jako čtenář čtenáři. Úvod končí čtvrtou kapitolou na straně 115 a na zbylých 230 stranách se hojně využívá technika CTRL+C, CTRL+V. Výklad končí přibližně na úrovni desátého NeHe Tutoriálu, takže nikde daleko. Celkově nezáživný manuálově/dokumentační styl psaní.
Je mi jasné, že u DirectX části budu povětšinou, jak se říká, vařit z vody. S největší pravděpodobností neuvedu všechny jeho (ne:-)výhody, za což se předem omlouvám. Navrhoval bych proto, aby mě nějaký Direct-positive čtenář kontaktoval a předal mi nějaké praktické informace o DirectX, ty nemám žádné. Základní teorie mám dost z literatury. Potom bych mohl (případně bychom mohli společně) napsat další díl článku.
Logo DirectX
Z historie
Na počátku osmdesátých let minulého století, v době, kdy výpočetní technice kraloval textový režim, se u společnosti Silicon Graphics Inc. (SGI) začaly vyvíjet grafické stanice a knihovna IRIS GL, kterou lze považovat za přímého předka OpenGL. Jak šel vývoj dopředu, zbavovala se některých problematických rysů a dá se říct, že její poslední verze je s OpenGL téměř kompatibilní. Standard OpenGL vznikl na začátku devadesátých let (v [3] se uvádí rok 1992) a narozdíl od IRIS GL byl od počátku koncipován jako nezávislý na hardwaru, operačním systému a programovacím jazyce. Od té doby se změnil pouze minimálně, nejnovější verze je 1.5 a každý, kdo dělá s OpenGL, určitě ví, že se připravuje verze 2.0.
V raných dobách OS Windows se hry vytvářely spíše pro MS-DOS (hledal jsem domovský web, ale nezabral ani Google…). Důvodem byla několikavrstvá struktura Win API a hlavně celková extrémní pomalost GDI, které se pro větší projekty (rozuměj jakékoli projekty) naprosto nehodilo. Kdysi jsem v něm udělal několik 2D her, tím mé pokusy skončily – díky, ale už ne.
Microsoft si byl problémů s GDI vědom, první pokus o jejich napravení se jmenoval WinG. Jednalo se o množinu funkcí, které umožňovaly přímý přístup do grafické paměti (do té doby to nešlo). Postupným vývojem vzniklo Game SDK, které se za nějakou dobu přejmenovalo na DirectX.
Jeho prvních několik verzí bylo prakticky téměř nepoužitelných (jako u mnoha dalších MS technologií), v současnosti jich existuje devět a jsou mezi sebou většinou nekompatibilní. To znamená, že pokud používáte DX5 a chcete přejít na DX6, musíte se vše začít učit znovu od začátku a všechen dosavadní kód musíte upravit nebo dokonce kompletně přepsat (což často bývá rychlejší). V současné době je DirectX ve verzi 9.0.
Uvedením DirectX vyvolal Microsoft na jednu stranu pozitivní, na druhou stranu negativní rozruch. (Windows) vývojáři her konečně dostali ucelený balík komponent – DirectDraw pro 2D grafiku, Direct3D pro 3D grafiku, DirectSound pro zvuky, DirectNet pro síťování atd. Nejdiskutovanější bylo právě Direct3D. Většina specialistů z oboru se shodovala na tom, že nevznikl žádný důvod k zavedení nového standardu. OpenGL plně postačovalo všem aplikacím a bylo prověřené časem. I když Direct3D disponuje prakticky stejnými funkcemi jako OpenGL, styl programování se naprosto liší.
Dále už budeme porovnávat pouze OpenGL a Direct3D, protože určitě chápete, že srovnávat 3D grafiku např. se zvuky nebo síťováním dost dobře nejde :-)
Literatura
- [0] Vlastní zkušenosti s 3D grafikou
- [1] Clayton Walnum: Programujeme grafiku v Microsoft Direct3D (9.0), Computer Press 2004, první vydání, 358 stran
- [2] Chip 01/2004, Hardwarový fotorealismus: Možnosti moderních 3D grafických akcelerátorů, str. 96–100)
- [3] Daniel Čech: OpenGL – Referát na praktikum z informatiky (PDF) – Opravdu kvalitní text
- [4] Bernard Lidický: Několik poznámek k tvorbě počítačových her (PDF) – Věnuje se především tématům, jaké hry programovat a v čem (přenositelné knihovny Allegro a SDL)
- [5] Linuxové hry (47): Unreal Tournament 2004 – Hlavní impuls pro vznik tohoto seriálu