DirectX

Microsoft DirectX [dəˈrektˈeks] je sada proprietárních knihoven, poskytujících aplikační rozhraní (API) pro umožnění přímého ovládání moderního hardwaru. Jejich cílem je maximální využití možností hardware jak po stránce nabízených funkcí, tak z hlediska maximálního výkonu, což je využíváno pro tvorbu počítačových her, multimediálních aplikací i grafického uživatelského prostředí (viz Windows Aero). Původně měla API samostatná jména (a dodnes mají) například Direct3D, DirectDraw, DirectMusic a další; název DirectX je tak zkratkou pro všechny tyto knihovny, kdy X nahrazuje název knihovny a později se tak stal i názvem celé kolekce. Když Microsoft začal vyvíjet vlastní herní konzoli, ono X bylo použito jako základ názvu (Xbox, zkratka z DirectXbox) a značilo tak, že i tato konzole poběží na technologii DirectX. Samotné X se pak objevilo i v názvech některých API posledních verzí DirectX, například Xinput, Xaudio2 nebo XACT.

Vývojářský kit pro DirectX (software development kit, SDK) pak obsahuje běhové (runtime [ˈrʌntaɪm]) knihovny v rozšiřitelné binární formě, společně s dokumentací pro použití. Původně se běhové knihovny DirectX instalovaly společně s hrami, nebo ručně uživatelem. Původní Windows 95 DirectX nativně neobsahoval – to až ve verzi Windows 95 OEM Service Release 2; od těch časů byl DirectX součástí všech následujících Windows. Vývojářský kit je pak možné zdarma stáhnout na internetu. Přestože je SDK uzavřeným (closed-source) softwarem, pro většinu částí je dostupný i zdrojový kód.

Direct3D 9Ex, Direct3D 10 a Direct3D 11 jsou dostupné pouze pro Windows Vista a novější, protože tyto verze spolupracují s novým nativním ovladačem WDDM, který byl představen právě ve Windows Vista. Tyto ovladače zahrnují novou správu video paměti, která podporuje virtualizaci grafického hardwaru v různých systémových aplikací, například správce oken.

Jak z názvu vyplývá, je DirectX produkt firmy Microsoft určeným výhradně pro operační systém Microsoft Windows.

Části 
DirectX se skládá z několika částí, rozdělených podle svého účelu. Rozdělení je podstatné pouze pro programátory, protože je k dispozici jako souhrnný balík obsahující všechny komponenty.

 DirectX Graphics obsahující:
 DirectDraw: pro vykreslování 2D grafiky (rastrová grafika); nahrazeno Direct2D), avšak stále používáno ve hrách a pro renderování videa multimediálních aplikací
 Direct3D (D3D): pro vykreslování 3D grafiky
 DXGI: pro zjištění grafických adaptérů a monitorů, jež jsou k dispozici; poskytuje společný základ pro Direct3D a OpenGL
 Direct2D: pro 2D grafiku
 DirectWrite: pro fonty
 DirectCompute: pro využití GPU pro výpočty
 DirectInput: rozhraní pro vstupní zařízení (klávesnice, myš, joystick, různé herní ovladače); po verzi 8 nahrazeno rozhraním XInput pro ovladače Xbox 360 nebo standardní WM INPUT
 DirectPlay: pro komunikaci přes počítačovou síť; po verzi 8 označeno jako zastaralé (deprecated)
 DirectSound: pro přehrávání a záznam zvukových samplů
 DirectSound3D (DS3D): pro přehrávání prostorových zvuků
 DirectMusic: pro přehrávání zvuků vytvořených DirectMusic; označeno za zastaralé
 DirectX Media: zahrnující DirectAnimation pro webovou 2D/3D animaci, Microsoft DirectShow pro přehrávání multimédií a streamování, DirectX Transform pro webové interaktivní aplikace a Direct3D Retained Mode pro 3D grafiku vyšší úrovně; DirectShow obsahuje DirectX pluginy pro zpracování audiosignálu a DirectX Video Acceleration pro akcelerované přehrávání videa
 DirectX Diagnostics (dxdiag): nástroj pro diagnostiku a podání zpráv o stavu jednotlivých komponent (audio, video, vstupní ovladače)
 DirectX Media Objects: podpora pro streamované objekty (enkodéry, dekodéry a efekty)
 DirectSetup: pro instalaci komponent DirectX a zjištění jeho aktuální verze

Historie 
V druhé polovině roku 1994 byl Microsoft připraven na vydání svého nového operačního systému, Windows 95. Důležitým rozhodujícím faktorem pro zákazníky pochopitelně bylo, co za aplikace budou moci na tomto systému spustit. Tři zaměstnanci Microsoftu, Craig Eisler, Alex St. John a Eric Engstrom, však byli znepokojeni, protože pro herní vývojáře byl lepší platformou předešlý operační systém MS-DOS, což by znamenalo málo aplikací pro Windows 95 a tedy neúspěch celého systému.

DOS dovoloval přímý přístup ke grafickým kartám, klávesnicím, myším, zvukovým zařízením a dalším částem systému, zatímco Windows 95 s ochranou paměti přístup ke všem zařízením neumožňoval. Microsoft tak potřeboval rychlé řešení pro programátory, vzhledem k tomu že Windows 95 měl brzy vyjít. Trojlístek Eisler, St. John a Engstrom tak společně pracoval na řešení, které později nazvali DirectX.

První verze DirectX byla vydána v září 1995 jako Windows Games Software Development Kit. Byla tak náhradou za DCI a WinG, API určené pro Windows 3.1. Díky DirectX tak všechny Windows, počínaje verzí 95, umožňovaly vysokou multimediální výkonnost. Následné přijetí DirectX herními vývojáři bylo ale velmi pozvolné; přetrvávaly totiž obavy, že DirectX bude brzy nahrazen něčím novým (jako tomu bylo u DCI a WinG), že Windows 95 nepřekonají výkon MS-DOS, a že velký počet konzervativních vývojářů zůstane právě u MS-DOS.

DirectX 2.0 se stal přímou součástí Windows s příchodem verze Windows 95 OSR a Windows NT 4.0 v polovině roku 1996. Protože byl Windows 95 stále nový systém, pro který bylo vydáno malé množství počítačových her, tak se Microsoft rozhodl pro silnou propagaci u herních vývojářů, kteří nevěřili ve schopnosti Microsoftu vytvořit fungující herní platformu pro Windows. Duchovní otec DirectX, Alex St. John, měl pak na konferenci pro herní vývojáře v roce 1996 přednášku, kde mimo jiné nechyběli ani živí lvi, na které Microsoft poprvé představil Direct3D a DirectPlay, a demonstrovali režim více hráčů (multiplayer [ˈmʌltipleɪə(r)]) hry MechWarrior 2 hraný přes internet.

Tým okolo DirectX pak čelil výzvě testování všech verzí na veškerém dostupném hardwaru a softwaru. Velké množství grafických karet, zvukových karet, základních desek, CPU, vstupních zařízení, her a dalších multimediálních aplikací bylo testováno s každou beta verzí a finální verzí. Tento tým stál také za vývojem testovacího prostředí, který hardwarovým vývojářům dovoloval testovat, že nový hardware a jeho ovladače budou s DirectX plně kompatibilní.

V upravené verzi je DirectX použitý také na konzolích Xbox a Xbox 360. API pro Xbox bylo navrženo Microsoftem společně s firmou Nvidia, která pro původní Xbox navrhla grafický čip NV2A (odvozený z GeForce 3). API pro Xbox je velmi podobné PC verzi 8.1, nicméně (tak, jako ostatní technologie konzolí) je neaktualizovatelné na novější verzi. Pracovní název pro konzole Xbox byl původně DirectXbox.

Přehled verzí DirectX 
Verze DirectX zde uvedené musí také podporovat grafická karta!

DirectX 10 
Tento významný update celého DirectX je dostupný pouze pro systém Windows Vista a novější. Předchozí verze Windows (například Windows XP) nemohou spouštět aplikace určené pro DirectX 10. Pokud je v systému s Windows XP hardware podporující verzi 10, pracuje neplnokrevně v módu DirectX 9.0c (což je poslední verze, která pro Windows XP vyšla). Některé neoficiální projekty ale přinesly port DirectX i pro Windows XP.

DirectX přineslo významné změny. Spousta částí aplikačního rozhraní byla zavržena a v nejnovějším vývojářském kitu se zachovaly jen kvůli kompatibilitě. DirectInput nahradil novější Xinput, DirectSound nahradil systém XACT (Cross-platform Audio Creation Tool) a přišel o hardwarovou akceleraci; Windows Vista renderují zvuk jen softwarově via CPU. Knihovna DirectPlay, dplay.dll, byla odstraněna a nahrazena knihovnou dplayx.dll. Počítačové hry, které tuto knihovnu využívaly, řeší problém duplikací knihovny a jejího následného přejmenování na dplay.dll. První hrou, přímo založenou na DirectX 10, byla 3D FPS Halo 2, která byla určená jen pro Windows Vista. Mezi další hry patří například Bioshock a Crysis.

Aby se dosáhlo zpětné kompatibility, DirectX ve Windows Vista obsahují několik verzí Direct3D:

 Direct3D 9: emuluje chování Direct3D 9 tak, jak tomu bylo ve Windows XP. Veškeré nové funkce WDDM (Windows Display Driver Model) jsou pro aplikace zakázané, pokud jsou tyto ovladače nainstalovány. Jde o jediné dostupné API v případě, že jsou nainstalovány ovladače pro Windows XP (XDDM), například při upgradu na Windows Vista.

 Direct3D 9Ex (při vývoji Windows Vista také známé jako 9.0L nebo 9.L): povolují přímý přístup ke všem funkcím WDDM (za předpokladu, že jsou ovladače WDDM nainstalovány), při zachování zpětné kompatibility; Windows Aero plocha běží právě na D3D 9Ex.

 Direct3D 10: Designováno pro nový model ovladačů ve Windows Vista (WDDM) obsahující několik zlepšení renderovacích schopností a flexibility, například Shader Model 4.

DirectX 10.1 je přírůstkový update verze 10.0, který vyšel společně s Windows Vista Service Pack 1, který také vyžadoval. Tato verze upravuje několik standardů kvality obrazu, díky kterým mají výrobci grafických karet nad kvalitou obrazu větší kontrolu. Také například přidává rozhraní Direct2D, podporu kubické mapování (cubic mapping), exportování krycích masek z pixel shaderů, schopnost provozu pixel shaderu po snímcích a vyžaduje, aby grafické karty podporovaly Shader Model 4.1 a vyšší a 32bitové operace s plovoucí desetinnou čárkou. Tato verze plně podporuje hardware DirectX 10.0, ale pro správný chod všech nových funkcí je potřeba hardware s podporou verze 10.1.

DirectX 11 
Microsoft představil DirectX 11 v Seattlu na Gamefest 08. Hlavní novinky pak byly podpora GPGPU (DirectCompute) a zlepšení vícejádrové podpory pro herní vývojáře, pro jednodušší odladění her pro vícejádrové (multi core) procesory. DirectX 11 podporuje Windows Vista, 7 i 8. Některé součásti tohoto API fungují i s hardwarem určeným pro starší verze 9/10/10.1, zatímco například Shader Model 5.0 vyžaduje hardware s přímou podporou DirectX 11. Jedenáctka je pak rozšířením verze 10.1 – veškerý hardware a funkce 10.1 byly zachovány, nové funkce se zapínají pouze pokud je vyžaduje aplikace. To pomáhá zachování plné kompatibility se staršími verzemi DirectX.

Microsoft vydal finální update pro Windows Vista pět dní po oficiálním vydání Windows 7, které DirectX 11.0 obsahovaly ve své základní výbavě.

Direct X 11.1 je přímou součástí Windows 8. Podporuje WDDM 1.2 pro zlepšení výkonu, zlepšení integrace Direct2D, Direct3D a DirectCompute a přináší DirectXMath, XAudio2 a knihovny z XNA framework pro Xinput.

DirectX 11.2 pak bude exkluzivně pouze pro Windows 8.1 (podobně jako DirectX 10.1 pro Windows Vista Service Pack 1).

DirectX 12 
Určen pro Windows 10; vyžadován pro běh Windows 11.

Direct3D 
Direct3D je programové API rozhraní nabízející aplikacím širokou škálu funkcí pro práci s 3D grafikou.

Odkazy

Reference

Související články 
 OpenGL – Alternativní multiplatformní API, které je možné používat jak v Microsoft Windows, tak v macOSu, Linuxu a dalších operačních systémech.
 OpenAL
 OpenML
 OpenCL
 Vulkan

Externí odkazy 
 
 Podpora DirectX na stránkách Microsoftu 
 Programátorské stránky o DirectX na MSDN 
 DirectX FAQ na serveru GameDev 
 Programátorské články o DirectX na serveru GameDev 

Microsoft Windows
Počítačová grafika
API Microsoftu