Microsoft DirectX
Microsoft DirectX Microsoft Windows コンポーネント | |
---|---|
詳細 | |
標準提供 |
Windows 95 OSR2 Windows NT 4.0 SP3 以降のWindows |
DirectX Runtime
編集コンポーネント群
編集リリース履歴
編集バージョン | 概要 | 日付 |
---|---|---|
WinG、Display Control Interface | Windows 3.1時代。 | |
DirectX 1.0 | ゲーム作成用のAPI集Game SDKとして発表された。 | 1995年10月 |
DirectX 2.0 | Direct3D (Immediate Mode, Retained Mode) の登場。 | 1996年6月 |
DirectX 3.0[28] | DirectSound3D登場、DirectInputの統合。Windows NT 4.0ではSP3以降に同梱。 | 1996年9月25日 |
ActiveMovie1 | DirectShowの前身。ActiveXの1コンポーネントであり、DirectXには含まれない。 | 1996年11月5日 |
DirectX 5.0 | Direct3DにDrawPrimitive(OpenGLのようなプリミティブ単位の描画機能)が登場。Windows 98にはDirectX 5.2が搭載された。 | 1997年8月4日 |
DirectX Media | DirectShowおよびDirectAnimationのみ頒布。「DirectX」は総称だが、特に区別する場合は「DirectX Foundation」「DirectX Media」と使い分ける事がある。 | 1997年12月1日 |
DirectX 6.0 | 3D描画向けの「Direct3D」の強化、AMD提唱の3D向け命令セット「AMD 3DNow!」への対応や、ジオメトリパイプラインの見直し、テクスチャデータ圧縮機能のサポートなどにより高速化が図られたほか、シングルパス・マルチテクスチャやバンプマッピングのサポートなど表現力の向上。 | 1998年8月7日 |
DirectX 6.1 | DirectMusic登場。SSEのサポート。Windows 98 SEに搭載。 | 1999年2月3日 |
DirectX 7.0 | Visual Basicをサポート、Direct3Dの機能強化(ハードウェアT&Lのサポートなど)。Windows 2000に搭載され、NT系列でも最新機能が使えるようになった。 | 1999年9月22日 |
DirectX 7.1 | Windows Meに搭載された。 | 2000年 |
DirectX 8.0 | DirectDrawとDirect3Dが統合されてDirectX Graphicsに、DirectSoundとDirectMusicが統合されてDirectX Audioと呼ばれるようになった。Windows 2000および9x系で使用可能。原始的なプログラマブルシェーダーが搭載された。 | 2000年11月9日[29] |
DirectX 8.1 | Windows XPに搭載。Windows 2000・Me・98用に単体配布もされている。このバージョンより95が対象外となった。 | 2001年 |
DirectX 8.2 | Windows 2000およびWindows XPで使用可能。短期間配布された。 | 2002年 |
DirectX 9.0 | 各コンポーネントの機能強化が中心。高レベルシェーダー言語HLSLが導入された。また、マイナーチェンジとなるDirectX 9.0cがWindows XP SP2に搭載された。Windows 2000・Me・98用に単体配布もされている。この頃から、DirectXのバージョンが上がっても、更新されるのはDirect3Dだけとなりつつあり、DirectX 9.0といえばDirect3D 9.0のことを指すことになる。 | 2002年12月20日 |
Direct3D 9.0Ex | Windows Vista以降に搭載されている、Direct3D 9.0の改良版。Windows VistaのWindows AeroはDirect3D 10ではなく9Exで描画されている。 | 2007年 |
DirectX 10.0 | Windows Vista以降でのみ利用可能。DXGIやジオメトリシェーダーが導入された。 | 2007年 |
DirectX 10.1 | Windows Vista SP1以降でのみ利用可能。GPUの仮想化技術の実装。 | 2008年 |
DirectX 11.0 | Windows Vista SP2 + Platform UpdateとWindows 7以降で利用可能。高精細な描画を可能にするテッセレーションのサポートや新たな命令セットが追加されたほか、GPUコンピューティングを実現するDirectCompute (DirectX Compute Shader)、マルチコアCPUに対応したマルチスレッディング処理、HDR圧縮などの新機能を実装している。高レベル2DグラフィックスAPIであるDirect2Dなども含まれる。 | 2009年 |
DirectX 11.1 | Windows 8以降で利用可能。WinRT相互運用やDirect2Dの大幅な機能強化なども含まれる。一部機能はWindows 7にもPlatform Updateとしてバックポートされた[30]。 | 2012年 |
DirectX 11.2 | Windows 8.1・Xbox Oneでのみ利用可能[26]。 | 2013年 |
DirectX 11.3 | Windows 10以降でのみ利用可能。DirectX 12に搭載される新機能の一部は、同時期に提供される従来からの高レベルAPIのマイナーチェンジとなるDirectX 11.3にも搭載される[31][32][33]。 | 2015年 |
DirectX 12 | Windows 10以降でのみ利用可能。高レベルだがオーバーヘッドの大きかったDirect3D 11までと比べて、Direct3D 12はよりハードウェアに近いローレベルな制御を可能とするAPIとなった[34]。 | 2015年 |
DirectX 12 Ultimate | Windows 10バージョン2004以降でのみ利用可能。 | 2020年 |
DirectX 4はリリースされなかった。Raymond Chenの著書The Old New Thing(邦訳:Windowsプログラミングの極意 歴史から学ぶ実践的Windowsプログラミング!)によると、DirectX 3がリリースされた後に、マイクロソフトは後継のバージョン4と5の開発を同時に始めた。バージョン5がより実りの多いものになる予定だったのに対し、バージョン4は小幅な機能拡張を伴う短期リリース版となる予定だった。しかしDirectX 4に実装される予定の機能はゲーム開発者の興味をそそらず、そのためDirectX 4はキャンセルされ、すべての機能をDirectX 5に組み込むことになったが、すでに執筆されていた多数のドキュメント内ではこれら2つのバージョンを明確に区別していた。マイクロソフトは混乱を避けるため、バージョン5をバージョン4にリネームするようなことはせず、バージョン4をスキップすることにした[35]。
歴史
編集DirectX 9のリリース
編集2002年にマイクロソフトは、以前よりもはるかに長いシェーダープログラムを扱えるシェーダーモデル2.0(頂点シェーダー2.0、ピクセルシェーダー2.0)と高級シェーディング言語HLSLをサポートしたDirectX 9をリリースした。2004年8月にはさらに機能を強化したシェーダーモデル3.0を導入したDirectX 9.0cをリリースし、それ以降もDirectX一式の更新を続けている。
DirectX SDK February 2005を最後に、DirectShowはDirectX SDKから取り除かれ、代わりにMicrosoft Platform SDKへ移動された(DirectX SDK April 2005以降にはDirectShow関連ファイルが含まれない)。しかしPlatform SDKに付属するDirectShowのサンプルをビルドするためにはDirectX SDKが必要である[45]。
DirectX 10のリリース
編集DirectX 11のリリース
編集DirectX 12のリリース
編集DirectX 12 Ultimateのリリース
編集補助ライブラリ
編集.NET Framework用ラッパー
編集かつてDirectX 7.0およびDirectX 8.0でC++向け以外にVisual Basic用のインターフェイスが提供されたものの、基本的にDirectXはC++言語専用のAPIである。ここでは.NET Framework言語環境向けにラップされたマネージコードライブラリを紹介する。
Managed DirectX (MDX)
編集Microsoft XNA
編集SlimDX
編集Managed DirectX 2.0はキャンセルされたが、後継のXNAは基本的にC#からしか利用できない上、Xbox 360とWindows双方に互換性のあるコードを記述することを主目的として開発されており、Managed DirectXの方向性とはやや異なるAPI(ゲームアプリケーション向けのフレームワーク)となっている。このため、Windowsプラットフォームにおける.NET用にDirectXのAPIをカプセル化した、SlimDXと呼ばれるライブラリが有志によって開発・提供されていたが、2012年1月を最後に更新されておらず、公式サイトも2019年現在は消失している。SlimDXはMDXのように、Direct3Dコアライブラリに加えてDirect3D拡張ライブラリであるD3DXもカバーする。
SharpDX
編集Windows API Code Pack for Microsoft .NET Framework
編集OpenGLとの関係
編集DirectXのうちDirectX Graphics (Direct3D) は、同じくリアルタイム3次元コンピュータグラフィックス (3DCG) を扱うためのAPI集合であるOpenGLとしばしば比較される。
用途
編集グラフィックスドライバー
編集wglGetProcAdd
ress()
関数を使用してエントリポイント︵関数ポインタ︶を取得する必要がある[93]。ICDがインストールされていない状態では、ソフトウェアやDirect3DラッパーによるOpenGL 1.1実装が使用される[94]。
Windows Vistaには最初からグラフィックスドライバーがプリインストールされているが、そのドライバーのOpenGLレイヤーはソフトウェア実装であり、OpenGLを利用したグラフィックスソフトウェアを満足に動作させることはできない[95]。グラフィックスハードウェアベンダーのICDをインストールするまで、OpenGL APIによってハードウェアアクセラレーターを直接駆動することはできない[96][97][98]。
ANGLE
編集GoogleのANGLE[99]プロジェクトのように、OpenGLそのものではなく、内部でDirect3Dを使用したラッパーを経由して、Windows上でWebGLやOpenGL ESを間接的に実現するライブラリも存在する。ANGLEはハードウェアベンダーのOpenGLドライバー(ICD)を経由せず、Direct3Dを利用してOpenGL APIを実現している[100][101]。
GPGPU
編集DirectXはバージョン11において、GPGPU用APIであるDirectComputeをDirect3Dの一部(コンピュートシェーダー)として包括的に実装している。OpenGLもまたバージョン4.3において、Direct3Dと同様のコンピュートシェーダーを導入している。なお、Direct3D/OpenGLともに、GPGPUを含むクロスプラットフォームなヘテロ環境用アクセラレーターAPIであるOpenCLとの連携(相互運用)を行なう拡張機能が用意されている[102][103]。