Ugrás a tartalomhoz

DirectX

Ellenőrzött
A Wikipédiából, a szabad enciklopédiából
(Directx szócikkből átirányítva)
DirectX

FejlesztőMicrosoft
Legfrissebb stabil kiadás12 Ultimate (stabil verzió, 2021. október 5.)
Programozási nyelv
  • High Level Shader Language
  • C++
Operációs rendszerMicrosoft Windows
Kategóriaalkalmazásprogramozási felület
Licencvé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]
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-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]
Idővonal
Főbb kiadások
1995DirectX 1
1996DirectX 2
DirectX 3
1997DirectX 5
1998DirectX 6
1999DirectX 7
2000DirectX 8
2001
2002DirectX 9
2003
2004
2005
2006DirectX 10
2007
2008
2009DirectX 11
2010
2011
2012
2013
2014
2015DirectX 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ó:

  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á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]
  1. msdn2.microsoft.com
  2. a b www.nyisztorkaroly.org. [2010. szeptember 4-i dátummal az eredetiből archiválva]. (Hozzáférés: 2009. szeptember 15.)

További információk

[szerkesztés]