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ář | Microsoft |
---|---|
První vydání | 30. září 1995 |
Aktuální verze | 12 Ultimate (5. října 2021) |
Operační systém | Microsoft Windows |
Vyvíjeno v | High Level Shader Language a C++ |
Typ softwaru | API |
Licence | End User License Agreement |
Některá data mohou pocházet z datové položky. |
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
editovatDirectX 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[1] 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
editovatV 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
editovatVerze DirectX zde uvedené musí také podporovat grafická karta!
DirectX verze | Číslo verze | Operační systém | Datum vypuštění | ||||
---|---|---|---|---|---|---|---|
DirectX 1.0 | 4.02.0095 | 30. září 1995 | |||||
DirectX 2.0 | Poskytováno pouze jinými programy než od Microsoft | 1996 | |||||
DirectX 2.0a | 4.03.00.1096 | 15. září 1996 | |||||
DirectX 3.0 | 4.04.00.0068 | 30, září 1996 | - | 4.04.00.0069 | Dodáván v balíčku DirectX 3.0 včetně Direct3D 4.04.00.0069 | 1996 | |
DirectX 3.0a | 4.04.0070 | Windows NT 4.0 SP3 Poslední podporovaná verze DirectX pro Windows NT 4.0 |
Prosinec 1996 | ||||
DirectX 3.0b | 4.04.0070 | Opravoval pouze kosmetický problém s japonskou verzí Windows 95 | Prosinec 1996 | ||||
DirectX 4.0 | Nikdy nebylo vypuštěno | ||||||
DirectX 5.0 | 4.05.00.0155 (RC55) | Dostupné jako součást beta verze Windows NT 5.0 | 1997 | ||||
DirectX 5.0 | 4.05.01.1721 / 1998 | Windows 98 | 1998 | ||||
DirectX 6.0 | 4.06.00.0318 (RC3) | Windows 98 SE | 1998 | ||||
DirectX 6.1 | 4.06.02.0436 (RC0) | 1999 | |||||
DirectX 7.0 | 4.07.00.0700 (RC1) | Windows 2000 a Windows ME | 1999 | ||||
DirectX 7.0a | 4.07.00.0716 (RC1) | 1999 | |||||
DirectX 8.0 | 4.08.00.0400 (RC14) | Xbox Poslední podporovaná verze DirectX pro Windows 95 |
2000 | ||||
DirectX 8.1 | 4.08.01.0810 4.08.01.0881 (RC7) |
Windows XP | 2001 | ||||
DirectX 9.0 | 4.09.0000.0900 | Windows Server 2003 | 2002 | ||||
DirectX 9.0a | 4.09.0000.0901 | 2003 | |||||
DirectX 9.0b | 4.09.0000.0902 (RC2) | 2003 | |||||
DirectX 9.0c | 4.09.0000.0904 (RC0) | Windows XP SP2 | 2004 | ||||
DirectX 9.0c | 4.09.0000.0904 | První verze obsahující dynamickou knihovnu D3DX | 2005 | ||||
DirectX 9.0c (čtrnáctidenní aktualizace) | 4.09.0000.0904 | prosinec '05 až únor '06 update přidal XML formát několika třídám. | Poslední verze: 26. červen, 2007 | ||||
DirectX 10 (Windows Vista) | 6.00.6000.16386 | Nová verze Direct3D určená pouze pro Windows Vista | 2006 | ||||
DirectX 10.1 (Windows Vista) | 6.00.6001.18000 | Vylepšená verze Direct 10 o nové prvky, např.: stínování a hra se světly. Součást Windows Vista Service Pack 1 |
4. února 2008 | ||||
DirectX 11 | 6.01.7600.16385 | Zlepšená podpora více GPU (multiGPU). Součást Windows 7 a časem byl přidán i do Windows Vista |
2009 | ||||
DirectX 11.1 | 6.02.9200.16384 | Windows 8, Windows RT, Windows Server 2012 | 1. srpna 2012 | ||||
DirectX 12 | 10.00.9926.0000 | Windows 10 Technical Preview Build 9926 | leden 2015 |
DirectX 10
editovatTento 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
editovatMicrosoft 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
editovatUrčen pro Windows 10; vyžadován pro běh Windows 11.[2]
Direct3D
editovatDirect3D je programové API rozhraní nabízející aplikacím širokou škálu funkcí pro práci s 3D grafikou.
Odkazy
editovatReference
editovat- ↑ 3D Animation of SPACE FIGHTER by DIRECT ANIMATION[nedostupný zdroj]
- ↑ FIŠER, Miloslav. Windows 11 vyjde už za měsíc. Systém bude i zdarma. PC – TV – FOTO. Právo. Borgis, 13. září 2021, roč. 31, čís. 212, s. 16. Upgrade bude dostupný. ISSN 1211-2119.
Související články
editovat- 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
editovat- Obrázky, zvuky či videa k tématu DirectX na Wikimedia Commons
- Podpora DirectX na stránkách Microsoftu (česky)
- Programátorské stránky o DirectX na MSDN (anglicky)
- DirectX FAQ na serveru GameDev (anglicky)
- Programátorské články o DirectX na serveru GameDev (anglicky)