DirectX
DirectX | |
Fejlesztő | Microsoft |
Legfrissebb stabil kiadás | 12 Ultimate (stabil verzió, 2021. október 5.) |
Programozási nyelv |
|
Operációs rendszer | Microsoft Windows |
Kategória | alkalmazásprogramozási felület |
Licenc | végfelhasználói licencszerződés |
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]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]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-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.
Verziói
[szerkesztés]1995 | DirectX 1 |
---|---|
1996 | DirectX 2 |
DirectX 3 | |
1997 | DirectX 5 |
1998 | DirectX 6 |
1999 | DirectX 7 |
2000 | DirectX 8 |
2001 | |
2002 | DirectX 9 |
2003 | |
2004 | |
2005 | |
2006 | DirectX 10 |
2007 | |
2008 | |
2009 | DirectX 11 |
2010 | |
2011 | |
2012 | |
2013 | |
2014 | |
2015 | DirectX 12 |
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. |
6.00.6002.18005 | Windows Vista SP2, Windows Server 2008 SP2 | 2009. április 28. | |
DirectX 11 | 6.00.6002.18107 | Windows Vista SP2, Windows Server 2008 SP2, Windows 7, Windows Server 2008 R2 | 2009. október 27. |
6.01.7600.16385 | Windows 7, Windows Server 2008 R2 | 2009. október 22. | |
6.01.7601.17514 | Windows 7 SP1, Windows Server 2008 R2 SP1 | 2011. február 16. | |
DirectX 11.1 | 6.02.9200.16384 | Windows 8, Windows RT, Windows Server 2012 | 2012. október 26. |
DirectX 11.2 | 6.03.9600.16384 | Windows 8.1, Windows RT, Windows Server 2012 R2 | 2013. október 18. |
DirectX 12.0 | 10.00.10240.16384 | Windows 10, Xbox One | 2015. július 29. |
10.00.15063.0000 | Windows 10 | 2017. március 20. | |
10.00.17763.0000 | Windows 10 | 2019. november 20. | |
DirectX 12.1 | 10.00.17763.0001 | Windows 10, DirectX Raytracing támogatás hozzáadva | 2018. október 2. |
10.00.18362.0116 | Windows 10, Variable Rate Shading (VRS) támogatás hozzáadva | 2019. május 19. | |
DirectX 12.2 | 10.00.19041.0928 | Windows 10, Ultimate | 2020. november 10. |
10.00.22000.1000 | Windows 11 | 2021. október 5. |
Összetevői
[szerkesztés]Direct3D
[szerkesztés]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
[szerkesztés]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]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
[szerkesztés]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]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]- 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]Kapcsolódó szócikkek
[szerkesztés]Jegyzetek
[szerkesztés]- ↑ msdn2.microsoft.com
- ↑ a b www.nyisztorkaroly.org. [2010. szeptember 4-i dátummal az eredetiből archiválva]. (Hozzáférés: 2009. szeptember 15.)