Direct3D (DirectX)

A Direct3D a Microsoft Windows operációs rendszerekhez fejlesztett grafikus API-ja, amelyre jelenleg a legtöbb PC-re megjelenő játék épül. A fejlesztés az OpenGL közvetlen ellenfelének tekinthető, így nem meglepő, hogy a képességek szempontjából nagyjából hasonló ütemben fejlődtek. A Direct3D-t jellemzően szokás DirectX-nek is nevezni, ami nem teljesen pontos, ugyanis utóbbi egy komplett csomag, aminek valóban a Direct3D adja ki a legnagyobb részét, de tartalmaz még különböző API-kat a 2D-s grafikára (Direct2D és DirectDraw), a beviteli eszközök kezelésére (DirectInput) és a hangok megszólaltatására (DirectSound). Jelen írásunkban csak a csomag grafikus API-jával foglalkozunk.

A Direct3D 1.0 még 1995-ben jelent meg és az első implementációja volt az API-nak meglehetősen limitált tudással, és az akkori hardvereknek megfelelően a fixfunkciós feldolgozáshoz igazodott. A Microsoft az OpenGL aktuális verziójához képest mind támogatásban, mind pedig a képességek területén lemaradásban volt, így rendkívül agresszív útitervet dolgoztak ki, és a játékfejlesztőkkel is nagyon szoros kapcsolatot próbáltak kiépíteni. Az OpenGL-re való felzárkózás hatására a Direct3D 2.0 és 3.0 különböző verziói már 1996-ban bemutatkoztak, ám a 4.0-s változat sosem látott napvilágot. Utóbbi annak volt köszönhető, hogy a Direct3D 5.0 a várnál gyorsabban már 1997-ben megjelent, amit 1998-ban követett az 5.2-es verzió. Utóbbi volt az az API, ami már kezdte felvenni a versenyt az OpenGL-lel, így számos játékfejlesztőt sikerült arról meggyőzni, hogy érdemes a Direct3D-re építeni.

A lényegi áttörését az 1999-ben megjelent Direct3D 6.1 hozta el, ami három hónappal később kapott egy 6.1a jelzésű frissítést is. Rendkívül fontos funkció volt ezekben a multitextúrázás támogatásának bevezetése, így tartották a lépést az OpenGL 1.2.1-gyel, és a rendkívül erős fejlesztői támogatásnak, illetve a Microsoft meggyőzőerejének és pénztárcájának hála a Direct3D erősen szorongatni kezdte a konkurens API-t.

Az API történetében a Direct3D 7.0 hozta az első jelentős változást, mely még 1999-ben, egészen pontosan az év szeptemberében megjelent, és bevezette a fixfunkciós T&L-t (transform and lighting), így a grafikus vezérlő a transzformációval és megvilágítással kapcsolatos feladatokat átvehette a központi processzortól. Ez egy „bedrótozott” algoritmust használt a transzformáció és megvilágítás szintjének kalkulálásához, ami limitációt is jelentett, de ugyanakkor a grafikus vezérlők őrületes sebessége ezt nagymértékben ellensúlyozta. A 7.0a és 7.1 jelzésű verziók 2000-ben egészítették ki a rendszert, majd az első igazi pofont szintén ebben az évben vitte be a Microsoft az OpenGL-nek a Direct3D 8.0-val, ami már támogatta a vertex és pixel shader programokat. Ezt az OpenGL felület komoly késéssel vezette be, így az ezredforduló során a Direct3D vált a PC-s játékfejlesztők fő grafikus API-jává. A Microsoft bevezette a shader modell jelölésrendszert ezzel különböztetve meg a hardverek képességeit. Az első verzió természetesen az 1.0 volt, amit a 8.0a API esetében követett az 1.1, míg 2001-ben a Direct3D 8.1 bevezette a pixel shader 1.3 és 1.4-et. Természetesen a nagyobb szám jobb programozhatóságot takar.

A Microsoft folytatta a rendkívül agresszív fejlesztést és 2002-ben már meg is érkezett a Direct3D 9.0 a shader modell 2.0-val együtt, majd ezt követte a 9.0a és 9.0b verzió, amelyek a shader modell 2.0-t modernizálták apróbb újításokkal. 2004-ben a Direct3D 9.0c is bemutatkozott, és bevezette a shader modell 3.0-t, ami grafikus vezérlők programozhatósága szempontjából máig a legjelentősebb lépésnek számít. A redmondi óriáscég ezzel megkérdőjelezhetetlenül átvette az uralmat az OpenGL-től, így az API fejlesztéseit lelassították, és elkezdtek reformokon dolgozni.

2006 a Direct3D 10 éve, ami csak a vele azonos időben megjelent Windows Vista operációs rendszerre volt elérhető. Ez az API a DirectX történetének egy másik fontos állomása, mivel a Microsoft meg merte lépni azt, amire senki sem gondolt: a Direct3D 10 ugyanis olyan újításokat vezetett be, melyekkel az API többletterhelése csökkenthető, ám ennek az volt az ára, hogy a visszafelé kompatibilitás megszűnt. Ennek megfelelően egy Direct3D 10-re írt alkalmazás semmilyen formában nem futott Windows Vista operációs rendszer és Direct3D 10-et támogató hardver nélkül. Ez példátlan volt az API-k történetében, de furcsa módon pont ez a húzás vezetett oda, hogy a DirectX bebiztosítsa uralmát a PC-n. Az új API egyébként bevezette a shader modell 4.0-t és a geometry shadert is, ami még tovább növelte a grafikus vezérlők programozhatóságát. Az API 2008-ban kapott egy 10.1 jelzésű frissítést, ami a Gather4 utasítások megjelenését hozta magával és kiterjesztette az MSAA kompatibilitását.

A Direct3D 11 2009-ben futott be és szintén jelentős újításokat kínált. A shader modell 5.0 mellé megjelent a compute shader, ami a grafikus vezérlőket igen hatékonyan használhatták ki a fejlesztők az általános számítások szempontjából. Ezenkívül a Microsoft gondolt a kompatibilitásra, mivel a fejlesztők annak azért nem örültek, hogy az új és a régi hardverekre is külön leképzőt kell írni, így megszülettek az úgynevezett feature level szintek, amivel az új API egészen a Direct3D 9.0-ig visszaskálázta az adott alkalmazás grafikáját.

A Direct3D 11.1 a Windows 8-cal mutatkozott be 2012-ben és csak ezen az operációs rendszeren érhető el. A Microsoft főleg a fejlesztői kéréseknek tett eleget az új API-val, továbbá bevezetésre került egy OpenGL-hez hasonló kiterjesztésrendszer, ami lehetőséget ad a gyártóknak egyéni eljárásokkal kiegészíteni az API-t, így használva ki a modernebb hardverek extra képességeit.

Hirdetés