Vacsinou "hra" nepouziva priamo ziadnu graficku kniznicu, ale je postavena nad "enginom", ktory sa stara o grafiku a casto aj ovela viac (fyzika, sprava zdrojov, sietova vrstva, atd.). Prikladom takeho enginu je napriklad CryENGINE (zoznam hier nad tymto enginom<a/>) alebo Unreal Engine (zoznam hier). Tych enginov je samozrejme viac, ale tieto osobne pokladam za dnesnu spicku. Oba podporuju ako DirectX, tak aj OpenGL, cize ak sa studio rozhodne pouzivat jeden z nich, je to uz len ich lenivostou, ak hra dokaze bezat pod DX a nedokaze pod OpenGL. Z ich strany ide hlavne o vytvorenie shaderov optimalizovanych pre konkretnu technologiu. Kym pre DX treba pisat v jazyku HLSL, tak pre OpenGL v GLSL (Cg umyselne ignorujem). V dnesnom svete je ale pisanie shaderov mozno tretina roboty na hre, takze nie kazdy je ochotny podstupit ich tvorbu v oboch jazykoch. Su tam este mensie detaily, ale toto je asi ten najdolezitejsi dovod.
Samozrejme, existuju enginy, ktore su robene len konkretny jeden system, ale tie uz dnes podla mna nepatria k mainstreamu, kedze kto chce ovladnut svet konzol, nevyhne sa DX ani OpenGL.
Fuu, ako to zeditovat? Nejako to neprezilo zahradku v linku.
Zoznam odkazov:
CryENGINE - http://www.crytek.com/cryengine
Zoznam hier v nom - http://en.wikipedia.org/wiki/CryEngine#Games_using_CryEngine
Unreal Engine - http://www.unrealengine.com/
Zoznam hier v nom - https://en.wikipedia.org/wiki/List_of_Unreal_Engine_games
OpenGL má obecně horší výkon než DirectX. Její výhoda je v tom, že je skoro všude a i se dá emulovat. Ale výkonově a možnostmi je tak 1 až 2 roky za DirectX. Pokud chcete zkusit programovat přímo pro tahle dvě prostředí, tak DirectX pro vás bude řádově jednodušší na zvládnutí. Hello World v OpenGL sice není nijak komplikované, ale cokoliv složitějšího vás začne utápět v nekonečném množství výjimek. DirectX vás od toho do značné míry odstíní, takže práce s ním je jednodušší a rychlejší.
Řešením je použití grafických enginů, které umí oboje. Pak vývojář hry nemusí vůbec řešit, co se nakonec použije. Veškerou tu tvrdou práci udělá vývojář enginu.