DirectX - mezi aplikací a hardwarem

20. 1. 2010 07:00    Rubrika: Technologie    Autor: Bořek Kuzník

V dnešním článku se podíváme blíže na rozhraní DirectX, o kterém se začíná poslední dobou více hovořit v souvislosti s novými grafickým kartami s podporou DirectX 11. Povíme si, k čemu všemu DirectX slouží, z čeho se skládá a jaké jsou mezi jednotlivými verzemi rozdíly.

Na úvod bychom si měli říci, co to vlastně DirectX je. DirectX je informační sada knihoven vyvinutá společností Microsoft, která poskytuje aplikační programovací rozhraní (API) pro umožnění přímého ovládání moderního hardware. Je zaměřena na maximální využití daného hardware jak po stránce výkonu, tak z hlediska nabízených funkcí. Toho je využíváno pro tvorbu počítačových her, multimediálních aplikací a v neposlední řadě i grafického uživatelského prostředí (např. Windows Aero).

Podobnou funkci nemá DirectX sám. Konkurencí je rozhraní OpenGL, jež se používá kromě her nejčastěji v průmyslovém sektoru (CAD aplikace, virtuální realita nebo vědeckotechnická vizualizace). Hlavní výhodou OpenGL je oproti DirectX multiplatformita a také možnost implementace na hardware, který není podporován. Ovšem za cenu nižšího výkonu.

DirectX pracuje jako pomyslný most mezi aplikací a ovladačem daného hardware. To má za následek ohromné zjednodušení celého průběhu vývoje aplikace, jelikož stačí napsat aplikaci pro určité API (v tomto případě DirectX) a není nutné aplikaci vyvíjet pro 300 různých grafických karet, zvukových karet atd.

Na následujícím obrázku je jasně patrné schéma funkčnosti. Aplikace komunikuje s ovladačem hardwaru pomocí DirectX pro složité operace a přes GDI (což je základní knihovna Microsoftu v systémech Windows) pro jednoduché operace.
schema DirectX API

Pojem DirectX zahrnuje několik částí, rozdělených podle svého účelu:

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 referování videa multimediálních aplikací.
  • Direct3D (D3D): Pro vykreslování 3D grafiky.
  • DXGI: Pro zjištění grafických adaptérů a monitorů, které jsou k dispozici. Poskytuje společný základ pro Direct3D a OpenGL.
  • Direct2D: Pro vykreslování 2D grafiky.
  • DirectWrite: Pro tvorbu fontů.

DirectCompute: Pro využití GPU pro výpočty.

DirectImput: Rozhraní pro vstupní zařízení (klávesnice, myš a 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 zastaralé.

DirectSound: Pro přehrávání a záznam zvukových samplů.

  • DirectSound3D (DS3D): Pro přehrávání 3D zvuků.

DirectMusic: Pro přehrávání zvuků, označeno za zastaralé.

DirectX Media obsahující:

  • DirectAnimation: Pro webovou animaci 2D/3D.
  • DirectShow: Pro přehrávání multimédií a streamování, obsahuje také DirectX pluginy pro zpracování audiosignálu
  • DirectXTransform: Pro webové interaktivní aplikace.
  • Direct3D Retained Mode: Pro 3D grafiku vyšší úrovně.
  • DirectX Video Acceleration: Pro akcelerované přehrávání videa.

DirectX Diagnostics (DxDiag): Pro diagnostiku a podání zpráv o stavu jednotlivých komponent (audio, video, vstupní ovladače).

DirectX Media Objects: Podpora pro streamingované objekty (enkodéry, dekodéry a efekty).

DirectSetup: Pro instalaci komponent DirectX a zjištění jeho aktuální verze.

Jak je již patrné, tak v dnešní době je nezajímavější součástí Direct3D, protože se stará o vykreslování 3D grafiky. Tu dnes využívají zejména hry, které se vizuálním zpracováním velice rychle přibližují realitě (a tím stoupají nároky na stále rychlejší hardware). Za dobu existence DirectX (od r. 1995) bylo vypuštěno několik verzí DirectX, přičemž nejpodstatnější novinky se děly právě u součásti Direct3D. Proto většina lidí mluví o DirectX, přičemž myslí vlastně na Direct3D. Pojďme si nyní představit veškeré verze DirectX s informacemi, co vlastně přinesly nového.

DirectX 1.0
Vypuštěn v r. 1995 : Uvolněna jako Windows hry SDK, Direct3D zatím neexistoval. Byl určen pro nový OS Win95.

schema DirectX API

DirectX 2.0
Vypuštěn v r. 1996: Byl dodáván pouze s pár aplikacemi 3. stran. Obsahoval první verzi Direct3D, která vznikla z API Reality Lab společnosti RenderMorphics, kterou v roce 1992 zakoupil Microsoft.

schema DirectX API

DirectX 3.0, 3.0a, 3.0b
Vypuštěn v roce 1996: Obsahoval stále první verzi Direct3D. V pozdějších verzích obsahoval Direct3D nové verze (4.04.00.0069), která také nepřinesla žádnou novinku.

schema DirectX API

DirectX 4.0
Nebyl nikdy vypuštěn. Důvod byl ten, že Microsoft vyvíjel verzi 4 a 5 současně. Verze 4 měla jen lehce vylepšit DX 3, zatím co verze 5 měla přinést velké revoluční novinky. Ovšem vývojáři her o verzi 4 nejevili zájem, tudíž se Microsoft rozhodl rovnou vydat verzi 5.

DirectX 5.0
Vypuštěn v r. 1997. Obsahuje novou verzi Direct3D 5.0, která obsahuje DrawPrimitive API, které odstraňuje nutnost budování vlastní mezipaměti pro aplikace.

schema DirectX API

DirectX 5.2
Vypuštěn v r. 1998 speciálně pro Windows 98.

DirectX 6.0
Vypuštěn v r. 1998. Obsahoval Direct3D 6.0, který zavedl řadu funkcí, které jsou stále využívané na současném hardware. Jedná se zejména o multi-textury, asistenci bufferu, optimalizované geometrie pipeline pro x87, SSE a 3DNow! a volitelnou strukturu řízení pro zjednodušené programování.

schema DirectX API

DirectX 6.1 a 6.1a
Vypuštěn v r. 1999 kvůli Windows 98 SE.

DirectX 7.0, 7.0a a 7.1
Vypuštěn v r. 2000. Opět obsahoval další verzi Direct3D. Tato nám již v 7. verzi přinesla textury ve formátu .dds, podporu pro transformaci a světelnou hardwarovou akceleraci. Poprvé dostupnou na NVIDIA GeForce kartě. Navíc podpora vertex bufferů přinesla první zásadní zlepšení oproti OpenGL. Kromě výše zmíněného rozšířil hardware podporu multitexturingu.

schema DirectX API

DirectX 8.0, 8.0a, 8.1, 8.1a, 8.1b a 8.2
Vypuštěn v roce 2001, verze 8.1a a výše v roce 2002. Opět vyšší verze Direct3D. Konkrétně vrze 8.0. Zde byly plně programovatelné vertex a pixel shaders, což umožnilo vývojářům psát kód bez obav o stav hardwaru.

schema DirectX API

DirectX 9.0, 9.0a, 9.b a 9.0c
Vypuštěn v roce 2002, verze 9.0c byla k mání od roku 2004. Nová verze Direct3D 9.0 přináší nové shardery, podporu formátu plovoucí desetinné čárky a vyhledávání ve vertex sharderu. Nadstavba Direct 9Ex byla dostupná pouze v systému Windows Vista, umožnila využít systém Aero. Navíc umožnila virtualizovat a stránkovat systémovou paměť do paměti grafické. Také umožnila sdílet grafické procesory pro jednotlivé úlohy.

schema DirectX API

DirectX 10
Vypuštěn v r. 2006, upraven v roce 2008 a 2009. Přináší nový shader model 4.0, výrazně vzrostl počet instrukcí. Také přibyl jeden vrchol v shader fázi, což má za následek přenesení komplexní geometrie zcela na grafickou kartu.

schema DirectX API

DirectX 11
Vypuštěn koncem roku 2009. O tom, co nového přinesl, bude pojednávat druhý díl našeho článku.

schema DirectX API

Zdroj: www.wikipedia.cz, www.computerhope.com

Technologie

Diskuse