**DirectX** on Microsoftin Windows-käyttöjärjestelmälle ja Xbox-pelikonsoleille kehittämä, erityisesti peleihin tarkoitettu ohjelmointirajapinta tietokoneohjelman ja laitteiston välille. DirectX tarjoaa yhtenäisen rajapinnan mm. 3D-grafiikkaa, ääntä ja ohjauslaitteita varten.

Ohjelmointirajapinnat ohjaavat matalan tason toimintoja, jotka ovat yhteydessä laitteistoon tai korvaavat puuttuvia toimintoja emuloimalla niitä. Alun perin DirectX:n kehittivät kolme Microsoftilla työskennellyttä henkilöä: Craig Eisler, Alex St. John ja Eric Engstrom.

Tarve rajapinnan kehittämiseen oli se, että Windows 95 -käyttöjärjestelmässä suora pääsy laitteistoresursseihin oli suojattua, toisin kuin sitä edeltäneessä DOS-käyttöjärjestelmässä. Tarvittiin laitteistorajapinta (eng. hardware abstraction layer), jolla päästiin käyttämään laitteistoa matalammalla tasolla kuin mitä Windowsin perusfunktiot olisivat mahdollistaneet. Tämä oli tärkeää pelejä varten, jotta saatiin hyvä suorituskyky ja sulava pelikokemus.

Ennen DirectX:n kehitystä Microsoftilla oli WinG-rajapinta.

Komponentit
-----------

DirectX koostuu useasta erillisestä komponentista:

* **DirectX Graphics**, joka koostuu kolmesta rajapinnasta:
	+ **Direct2D** – kaksiulotteisen grafiikan piirtäminen
	+ **Direct3D** (D3D) – kolmiulotteisen grafiikan piirtäminen
	+ **DirectX Graphics Infrastructure** – yksinkertainen kommunikointi Direct3D:n ja WDDM:n välillä
* **DirectSetup** – DirectX-komponenttien asentaminen
* **DirectSound3D**
* **DirectX Media Objects** – tuki mediavirtojen käsittelyyn (koodekit ja efektit)
	+ **DirectShow**
		- **DirectX plugins**
		- **DirectX Video Acceleration**
	+ **DirectX Transform**
	+ **Direct3D Retained Mode**
* **DirectWrite** – fonttien piirtäminen
* **DirectCompute** – laskenta näytönohjaimella

Käytöstä poistuneita rajapintoja:

* **DirectInput** – näppäimistön, hiiren ja muiden peliohjainten käsittely
* **DirectPlay** – pelien kommunikointi keskenään verkon välityksellä
* **DirectSound** – äänen soittaminen ja nauhoittaminen
* **DirectMusic** – musiikin soittaminen

Direct3D
--------

Merkittävä osa-alue kehityksestä suuntautuu 3D-grafiikkaan käytettävän **Direct3D**:n kehitykseen, etenkin tehokkuuden parantamiseen. Nykyään käytetään vain yleisempää termiä DirectX puhuttaessa Direct3D:stä.

Versio 11 Direct3D:stä paransi tehokkuutta lisäämällä tuen monisäikeistykselle ja lisäsi tuen nk. GPGPU-käytölle nimellä *DirectCompute*.

Uusin versio 12 julkaistiin vain Windows 10:lle.

DirectCompute
-------------

*DirectCompute* on DirectX:n tuki GPGPU-käytölle eli grafiikkasuorittimen hyödyntämistä matematiikkasuorittimen tavoin puhtaasti laskentatehtäviin, kuten fysiikkamallinnukseen.
DirectCompute-ohjelma tehdään HLSL-kielellä.

Katso myös
----------

* Mantle
* Metal
* OpenAL
* OpenGL – laitteistoriippumaton grafiikkarajapinta
* Simple DirectMedia Layer
* Vulkan

Lähteet
-------

1. 1 2 3 4  Plaza – Katsaus DirectX 10 -rajapintaan (Arkistoitu – Internet Archive) 20.9.2007
2. ↑  Chris Hecker: A Whirlwind Tour of WinG *gamasutra.com*.  1.6.1997. Viitattu 10.5.2022. (englanniksi)
3. ↑  Direct3D 11 Features Microsoft. Viitattu 20.1.2017.
4. ↑  OpenGL:n korvaajan ja DirectX 12:n haastajan ensimmäinen versio julkaistiin – Mikrobitti *www.mikrobitti.fi*. Viitattu 20.1.2017.
5. ↑  Compute Shader Overview *docs.microsoft.com*.  31.5.2018. Viitattu 12.1.2021. (englanniksi)

Aiheesta muualla
----------------

* Microsoftin DirectX-sivut
* Microsoftin MSDN dokumentaatio DirectX:lle