A DirectX (továbbiakban DX) a Microsoft cég egyik csomagja a Windowsoperációs rendszerhez. Tipikusan multimédiás alkalmazások használják: játékok, média lejátszók és ehhez hasonló programok. Népszerűségét többek között annak köszönheti, hogy már a Windows 95-től kezdődően a DX a Windows rendszer szerves része.
A programozó szempontjából a DX jelentősen megkönnyíti a munkát, hiszen nem csak hogy nem kell egy-egy programnál az alapoktól indulnia, hanem lehetőséget biztosít arra is, hogy hardverfüggetlen programot írjon.
Felépítése
A DX több ezer API függvényt definiál, amiket az alkotók kisebb modulokra bontottak aszerint, hogy mi a feladatuk. A rendszer a MicrosoftCOM techonológiáját alkalmazza.
DirectGraphics: A DX kilences verziójában egyesítették a rendszer két elemét:
DirectDraw: A kétdimenziós grafikáért felelős
Direct3D: A háromdimenziós megjelenítésért felelős
DirectInput: A bemeneti eszközöket kezeli: a billentyűzetet, egeret, gamepad-ot, és minden más elképzelhető perifériát is
DirectMusic: Zenelejátszás a dolga. Egy játékban például a háttérzenét a DirectMusic szolgáltatja
DirectSound: Hanglejátszás és felvétel a feladata
DirectPlay: A hálózati kommunikációt egyszerűsíti le. A nyolcas verzióban jelent meg
DirectShow: Multimédiás anyagok megjelenítését végzi, a legtöbb lejátszó program ezt használja
DirectSetup: A DirectX API összetevőinek telepítéséhez szükséges
Története
A kilencvenes évek közepén megjelent Windows 95 új korszakot nyitott a számítástechnika történetében. Hiába az újdonság, egy hatalmas problémával szembesültek a Microsoft fejlesztői. A probléma az volt, hogy míg a valós módban futó DOS lehetővé tette a hardver közvetlen elérését, és ezzel iszonyú gyors programok elkészítését, addig a védett módú Windowskernel kisajátította magának az erőforrások kezelését, és egy teljesen egységesített kezelőfelületet (Windows API) biztosított a felhasználói programok számára.
A Windows API tehát lehetővé tette, hogy hardverfüggetlen programokat lehessen írni, a gyakorlatban viszont hamarosan kiderült, hogy az egységesítés bizony jelentősen csökkenti a rendszer teljesítményét. A Microsoftnál így rájöttek, hogy a programozóknak szükségük van arra, hogy továbbra is közvetlenül hozzáférhessenek a hardverhez, de nem akarták feladni a védett mód előnyeit. Már csak pár hónap volt hátra a bemutatóig, amikor is megszületett a DX elődje, a Windows Games SDK.
A DirectX gyorsan fejlődött, és hamarosan megjelent a Direct3D. A fejlesztők így egy alternatívát kínáltak az addig a 3D-s grafikában egyedülálló OpenGL-nek. (A Windows NT már a kezdetektől támogatta az OGL-t). A DirectX és az OpenGL versenye egyébként a Microsoft üzletpolitikájának a tipikus példája. Az OpenGL egy több platformos gyűjtemény, a DX azonban csak Windows rendszereken fut.
A DX-nek volt egy hatalmas előnye nyílt társával szemben: az Open GL „csak” grafikai támogatást nyújt, a DirectX viszont a multimédia minden területén (A beviteltől a hangokon, és hálózaton át a megjelenítésig) támogatást nyújt.
Az első DirectX, amely támogatja pixel és vertex shadereket, a DirectX 8. A DirectX 9 támogatja a vertex és pixel shaderek második generációját, 2004-től pedig már a 3.x-es shadergeneráció is támogatva van (DirectX 9.c).
A DirectX az évek során többször is jelentős változásokon esett át.
DirectX 5 A DirectX lemaradásait igyekeztek pótolni vele, az OpenGL tükrében.
DirectX 6 Az első DirectX, amely támogatja a multitextúrázást.
DirectX 7 A DirectX 6 kibővített változata, melyben lehetőség van arra, hogy a fénykezelést és a transzformálást hardveresen gyorsíthassa a grafikus kártya (T&L).
DirectX 8 Az első DirectX, amely támogatja a shadereket.
DirectX 9 Ebben a verzióban egyesítették a programozók a korábban különálló DirectShow és Direct3D komponenseket. Ezek után a két egység feladatát a (kibővített) Direct3D látta el.
DirectX 10 Többek között a Windows Vista-ban megjelent új drivermodell miatt a DirectX maga is számos újítást hozott magával. Ezek nem csak új képességeket, de szerkezeti válzotásokat is jelentettek. XP-re nem jelent meg, ez a verzió nem terjedt el.
DirectX 11 A Windows 7-tel együtt jelent meg, a célja a DirectX 10 leváltása. Néhány modern, AAA kategóriás számítógépes játék használja. Széles körben idáig nem terjedt el, tekintve, hogy bonyolult, mert kizárólag shader alapokon vezérelhető, és nem támogatja az XP-t.
DirectX 12 A Windows 10-hez készült, de a játékfejlesztők lehetőséget kapnak DirectX 12 futtatásra Windows 7 környezetben is. A World of Warcraft: Battle for Azeroth volt az első játék Windows 7 alatt, ami DirectX 12-ben futott.
A DX talán legismertebb eleme. Rengeteg Windows rendszerre írt játék ezt a 3D-s függvénykönyvtárat használja. A DirectX 10-től kezdve elhagyták a fixed-function felépítést, a grafika renderelése shadereken keresztül lehetséges, hasonlóan az OpenGL ES2-höz.
A Direct3D használata három alapvető lépésre bontható:
Előkészítés
Megjelenítés
Transzformációk
Renderelés
Lezárás
Az első lépésben a program csatlakozik a Direct3D rendszerhez, beállítja a képernyő tulajdonságait és elvégzi az alkalmazásspecifikus feladatokat is. A második és a harmadik lépés általában egy ciklusban ismétlődik a program futása során.[1]
DirectShow
A DirectShow a DX multimédiás tartalmak megjelenítéséért felelős komponense. Működése hihetetlenül egyszerű. A rendszer egy ún. szűrő-gráfot (FilterGraph) épít fel, a lejátszás során pedig átbocsátja az adatokat ezen a struktúrán. Főleg videólejátszó programok használják, a helyét már átvették más technológiák.
DirectDraw
A DirectX kétdimenziós megjelenítését végezte, így a szövegek megjelenítését vagy a képek kirajzolását. A DirectX 8-tól kezdődően már nincs külön DirectDraw, integrálták a Direct 3D rendszerbe. Főleg régebbi 2D-s játékszoftverek használják.
DirectInput
A beviteli eszközök (billentyűzet, egér, játékvezérlők) kezeléséért felelős komponense. A DirectX 8 óta nem változott. Ritkán használják.
DirectPlay
Célja, hogy a számítógépes játékok hálózaton keresztüli kommunikációjához egyszerű interfészt nyújtson. Nem volt képes felvenni a versenyt a tradicionális, tcp/udp/socket alapú hálózatkezeléssel, így nem terjedt el.
Irodalom
Nyisztor Károly - Shaderprogramozás. Grafika és játékfejlesztés DirectX-szel[2]
Nyisztor Károly - Grafika és Játékprogramozás DirectX-szel - A DirectX-ről, és az arra történő fejlesztésről bővebben.[2]