DirectX

A Wikipédiából, a szabad enciklopédiából

A DirectX (továbbiakban DX) a Microsoft cég egyik csomagja a Windows operá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[szerkesztés | forrásszöveg szerkeszté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 Microsoft COM 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[szerkesztés | forrásszöveg szerkesztése]

DxDiag a DirectX 6.1-ből (4.06.02.0436)
fut Windows 95 / DirectX 1.0 alatt

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ú Windows kernel 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-el 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.

Verziói[szerkesztés | forrásszöveg szerkesztése]

DirectX verzió Verziószám Operációs rendszer Megjelenési dátum
DirectX 1.0 4.02.0095   1995. szeptember 30.
DirectX 2.0 ? 1996
DirectX 2.0a 4.03.00.1096 Windows 95 OSR2 és NT 4.0 1996. június 5.
DirectX 3.0 4.04.00.0068   1996. szeptember 15.
4.04.00.0069 1996
DirectX 3.0a 4.04.00.0070 Windows NT 4.0 SP3-tól
utolsó DirectX verzió, ami támogatja a Windows NT 4.0-t
1996. december
DirectX 3.0b 4.04.00.0070 1996. december
DirectX 4.0 sosem készült el  
DirectX 5.0 4.05.00.0155 (RC55) 1997. július 16.
DirectX 5.2 4.05.01.1600 (RC00) DirectX 5.2 Windows 95-re 1998. május 5.
4.05.01.1998 (RC0) Windows 98 exkluzív 1998. június 25.
DirectX 6.0 4.06.00.0318 (RC3) Windows CE 1998. augusztus 7.
DirectX 6.1 4.06.02.0436 (RC0)   1999. február 3.
DirectX 6.1a 4.06.03.0518 (RC0) Windows 98 SE exkluzív 1999. május 5.
DirectX 7.0 4.07.00.0700 (RC1)   1999. szeptember 22.
4.07.00.0700 Windows 2000 2000. február 17.
DirectX 7.0a 4.07.00.0716 (RC0)   2000. március 8.
4.07.00.0716 (RC1)   2000
DirectX 7.1 4.07.01.3000 (RC1) Windows Me exkluzív 2000. szeptember 14.
DirectX 8.0 4.08.00.0400 (RC10)   2000. november 12.
DirectX 8.0a 4.08.00.0400 (RC14) az utolsó verzió Windows 95 támogatással 2001. február 5.
DirectX 8.1 4.08.01.0810 Windows XP, Windows Server 2003 és Xbox exkluzív 2001. október 25.
4.08.01.0881 (RC7) 2001. november 8.
DirectX 8.1a 4.08.01.0901 (RC?) ez a verzió tartalmaz egy frissítést a Direct3D-hez (D3d8.dll) 2002
DirectX 8.1b 4.08.01.0901 (RC7) Egy javítást tartalmaz a DirectShow-hoz Windows 2000 (Quartz.dll) alatt 2002. június 25.
DirectX 8.2 4.08.02.0134 (RC0) Ugyanaz, mint a DirectX 8.1b, de tartalmazza a DirectPlay 8.2-t 2002
DirectX 9.0 4.09.00.0900 (RC4)   2002. december 19.
DirectX 9.0a 4.09.00.0901 (RC6)   2003. március 26.
DirectX 9.0b 4.09.00.0902 (RC2)   2003. augusztus 13.
DirectX 9.0c 4.09.00.0903 Windows XP SP2 exkluzív  
4.09.00.0904 (RC0)   2004. augusztus 4.
4.09.00.0904 Windows XP SP2, Windows Server 2003 SP1, Windows Server 2003 R2 és Xbox 360 2004. augusztus 6.
DirectX 9.0c 4.09.00.0904 (RC0)   utolsó verzió: 2008. március
DirectX 10 6.00.6000.16386 Windows Vista exkluzív 2006. november 30.
DirectX 10.1 6.00.6001.18000 Windows Vista SP1, Windows Server 2008 2008. február 4.
DirectX 11 7.00.6002.18107 Windows Vista SP2, Windows Server 2008 SP2, Windows 7, Windows Server 2008 R2 2009. október 27.
DirectX 11.1 6.02.9200.16384 Windows 8 2012. október 26.
DirectX 11.2 6.03.9600.16384 Windows 8.1, Windows RT, Windows Server 2012 R2 2014. Q or 2015 Q

Összetevői[szerkesztés | forrásszöveg szerkesztése]

Direct3D[szerkesztés | forrásszöveg szerkesztése]

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ó:

  1. Előkészítés
  2. Megjelenítés
    1. Transzformációk
    2. Renderelés
  3. 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ás specifikus 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[szerkesztés | forrásszöveg szerkesztése]

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[szerkesztés | forrásszöveg szerkesztése]

A DirectX kétdimenziós megjelenítését végezte, így a szövegek megjelenítéséért vagy a képek kirajzolásáért. 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[szerkesztés | forrásszöveg szerkesztése]

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[szerkesztés | forrásszöveg szerkesztése]

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[szerkesztés | forrásszöveg szerkesztése]

  • 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]

Források[szerkesztés | forrásszöveg szerkesztése]

Kapcsolódó szócikkek[szerkesztés | forrásszöveg szerkesztése]

Jegyzetek[szerkesztés | forrásszöveg szerkesztése]

További információk[szerkesztés | forrásszöveg szerkesztése]