Microsoft DirectX
SharpDXはDirectX Graphics、DirectX Audio、DirectX Inputなどのマネージラッパーを提供するオープンソースのプロジェクトである。ライセンス形態はMITライセンスとなる。SharpDXは従来のデスクトップアプリのほか、Windowsストアアプリからも利用できる。バージョン2.6.3時点でDirectX 9、DirectX 10、DirectX 11をサポートする。Windows 10と同時に正式リリースされたDirectX 12 (Direct3D 12) も、バージョン3.0にて対応したが、DirectX 10 (Direct3D 10) など一部のレガシーAPIのサポートが終了している。2019年5月をもって、開発を終了することがアナウンスされた。
WindowsがOS標準機能でサポートするOpenGLバージョンは1.1までであり、グラフィックスハードウェア (GPU) ベンダーが提供しているOpenGL対応ドライバー (Installable Client Driver, ICD) をインストールするまで、(たとえハードウェアがOpenGL 1.2以降をサポートしていても)OpenGL 1.2以降の機能を使用することはできない。また、OpenGL 1.2以降で追加された関数を使用するには、ICDがインストールされた状態で、wglGetProcAddress()関数を使用してエントリポイント(関数ポインタ)を取得する必要がある。ICDがインストールされていない状態では、ソフトウェアやDirect3DラッパーによるOpenGL 1.1実装が使用される。
Windows Vistaには最初からグラフィックスドライバーがプリインストールされているが、そのドライバーのOpenGLレイヤーはソフトウェア実装であり、OpenGLを利用したグラフィックスソフトウェアを満足に動作させることはできない。グラフィックスハードウェアベンダーのICDをインストールするまで、OpenGL APIによってハードウェアアクセラレーターを直接駆動することはできない。
DirectXのうち、Direct3Dにはマイクロソフト純正の補助ライブラリとして、D3DX(英語版) (Direct3D Extension) と呼ばれるDirect3D拡張ライブラリが存在する。Direct3D自体はバッファ/テクスチャメモリの管理やプリミティブの描画といった比較的ローレベルかつ最低限の機能しか持たないが、D3DXには3Dグラフィックスプログラミングで必要となる算術演算、スプライト、メッシュ/テクスチャの読み書きといった比較的高レベルの機能が実装されている。主にDirect3D 9向けのD3DX9、Direct3D 10向けのD3DX10、そしてDirect3D 11向けのD3DX11およびD3DCSX11が存在する。多くのD3DX機能はd3dx9_XX.dll、d3dx10_XX.dll、d3dx11_XX.dllなどのコンポーネントに、C/C++用の関数・クラスや、COMインターフェイスとして実装されている。D3DXランタイムはDirect3D本体(コアコンポーネント)とは異なり、前述のようにWindows OSのセットアップやWindows Updateによるシステム更新ではインストールされず、またアプリケーションの開発に使用したDirectX SDKのバージョンによって必要となるDLLが異なるため、エンドユーザー環境でD3DXを使用するためにはDirectXエンドユーザーランタイムのインストールが必要となる。エンドユーザーランタイムのインストーラー最終バージョンでは、過去のDirectX SDK(June 2010まで)に対応するランタイムがすべてインストールされる。
dllなどは、OSによっては標準でインストールされておらず、また単独のエンドユーザー向けインストーラーも提供されていないため、開発者が対象環境に応じて明示的にアプリケーションに同梱しておく必要がある。.NET Framework 4.7はD3DCompiler_47.dllに依存しているが、インストーラーに含まれていないため、Windows 7などの旧環境では別途D3DCompiler更新プログラムを事前に適用しておく必要がある。
Windows 8.x以降は前者の基本ランタイムに加えて後者の追加ランタイムのうち特定のバージョン(XInput1_4.dllやXAudio2_8.dllなど)が最初からシステムコンポーネントとしてプリインストールされており、Windows 8/RT向けストアアプリ、Windows 8.1/RT 8.1向けストアアプリおよびユニバーサルWindowsプラットフォーム (UWP) アプリの開発では基本ランタイムと、この特定のバージョンの追加ランタイムのみを使うことができる。
DirectXを使用したアプリケーションプログラムを実行する際、「xxx.dllが見つからなかったため、このアプリケーションを開始できませんでした。......」といったエラーに対処するには、DirectXランタイムのアップデートが必要になる。ただし、使用するOSによっては完全に実行不可能である場合もある。例えばWindows XPではDirectX 10以降を使用したアプリケーションは実行できない。また、Windows Vista/7/8.xではDirectX 12を利用することはできない。
DirectXはバージョン11において、GPGPU用APIであるDirectComputeをDirect3Dの一部(コンピュートシェーダー)として包括的に実装している。OpenGLもまたバージョン4.3において、Direct3Dと同様のコンピュートシェーダーを導入している。なお、Direct3D/OpenGLともに、GPGPUを含むクロスプラットフォームなヘテロ環境用アクセラレーターAPIであるOpenCLとの連携(相互運用)を行なう拡張機能が用意されている。
DirectAnimation: 2D Webアニメーション用。
DirectX Media Objects: エンコーダー、デコーダー、エフェクトといったストリーミングオブジェクトのサポート。
DirectPlay(英語版): ネットワーク通信。DirectX 8以降更新終了。
DirectSetup(英語版): DirectXランタイムのセットアップ用であり、正確にはAPIではない。
DirectStorage: 最新のNVMeストレージデバイスに最適化された、低オーバーヘッドのI/Oを提供するAPI。DirectStorage 1.1では、Direct3D 12上に構築された、圧縮データをGPUで展開する機能もサポートする。Xbox Series X/SおよびWindows 10/Windows 11で利用可能。
DirectX APIは基本的にSide-by-Sideであり、複数のバージョンが競合することなく共存できるため、例えばDirectX 11がインストールされている環境でもDirectX 10およびそれ以前のバージョンを利用することは可能である。また、更新が終了したAPIのうち、OSに標準インストールされているコンポーネントに関しては、Windows 10などの新しいOSでも引き続きデスクトップアプリケーションにて標準的に利用すること自体は可能だが、Direct3D 8などのようにネイティブ64ビット版が用意されていないものも存在する。