「Microsoft DirectX」の版間の差分
Enternatto (会話 | 投稿記録) DirectX 12 Ultimateを追加 |
D3D9Exに関して追記。 |
||
(8人の利用者による、間の33版が非表示) | |||
11行目: | 11行目: | ||
== DirectX Runtime == |
== DirectX Runtime == |
||
DirectXの[[ランタイムライブラリ|ランタイム]] ([[ダイナミックリンクライブラリ|DLL]]) には大きく分けて2種あり、1つはd3d11.dllやd2d1.dllなどのような基本ランタイム、そしてもう1つはd3dx11_43.dll、D3DCompiler_43.dll、XAudio2_7.dllやxactengine3_7.dllといった[[ソフトウェア開発キット|SDK]]依存の追加ランタイムである。前者はWindows[[オペレーティングシステム]] (OS) のセットアップ時(プリインストール)、もしくは[[Microsoft Update]]/[[Windows Update]]などを通して最新のサービスパックや更新プログラムの適用時にシステムコンポーネントとして標準インストールされる一方で、後者は[[アプリケーションソフトウェア|アプリケーション]]の開発に使用したDirectX SDK([[Microsoft Windows SDK|Windows SDK]])のバージョンに依存し、またMicrosoft Update/Windows Update経由でのインストールはできないため、DirectXアプリケーションの利用者がマイクロソフトの配布サイトからDirectXエンドユーザーランタイムのセットアッププログラム<ref name="download_dx_rt_web">[https://www.microsoft.com/ja-JP/download/details.aspx?id=35 Download DirectX |
DirectXの[[ランタイムライブラリ|ランタイム]] ([[ダイナミックリンクライブラリ|DLL]]) には大きく分けて2種あり、1つはd3d11.dllやd2d1.dllなどのような基本ランタイム、そしてもう1つはd3dx11_43.dll、D3DCompiler_43.dll、XAudio2_7.dllやxactengine3_7.dllといった[[ソフトウェア開発キット|SDK]]依存の追加ランタイムである。前者はWindows[[オペレーティングシステム]] (OS) のセットアップ時(プリインストール)、もしくは[[Microsoft Update]]/[[Windows Update]]などを通して最新のサービスパックや更新プログラムの適用時にシステムコンポーネントとして標準インストールされる一方で、後者は[[アプリケーションソフトウェア|アプリケーション]]の開発に使用したDirectX SDK([[Microsoft Windows SDK|Windows SDK]])のバージョンに依存し、またMicrosoft Update/Windows Update経由でのインストールはできないため、DirectXアプリケーションの利用者がマイクロソフトの配布サイトからDirectXエンドユーザーランタイムのセットアッププログラム<ref name="download_dx_rt_web">[https://www.microsoft.com/ja-JP/download/details.aspx?id=35 Download DirectX End-User Runtime from Official Microsoft Download Center]</ref>をダウンロードして明示的にインストールする<ref name="how_to_install_dx">[https://support.microsoft.com/ja-jp/topic/d1f5ffa5-dae2-246c-91b1-ee1e973ed8c2 最新版の DirectX をインストールする方法 - Microsoft サポート]</ref>か、もしくはDirectXアプリケーションの開発者がアプリケーションのセットアッププログラムに必須ランタイムのインストール機能を含める必要がある<ref>[https://docs.microsoft.com/ja-jp/previous-versions/direct-x/bb219742(v=vs.85) ゲーム開発者のための DirectX のインストール | Microsoft Docs]</ref>。なお、Windows SDK 8.0付属のD3DCompiler_46.dllや、Windows SDK 8.1/10付属のD3DCompiler_47.dllなどは、OSによっては標準でインストールされておらず、また単独のエンドユーザー向けインストーラーも提供されていないため、開発者が対象環境に応じて明示的にアプリケーションに同梱しておく必要がある。.NET Framework 4.7はD3DCompiler_47.dllに依存しているが、インストーラーに含まれていないため、Windows 7などの旧環境では別途D3DCompiler更新プログラムを事前に適用しておく必要がある<ref>[https://support.microsoft.com/ja-jp/topic/0869046a-0972-7824-1bb8-5d89bf99e112 Windows 7、Windows Server 2008 R2、および Windows Server 2012 では、d3dcompiler の更新プログラムが欠落しているため、.NET Framework 4.7 のインストールがブロックされる - Microsoft サポート]</ref>。 |
||
Windows 8.x以降は前者の基本ランタイムに加えて後者の追加ランタイムのうち特定のバージョン(XInput1_4.dllやXAudio2_8.dllなど)が最初からシステムコンポーネントとしてプリインストールされており、Windows 8/RT向けストアアプリ、Windows 8.1/RT 8.1向けストアアプリおよび[[ユニバーサルWindowsプラットフォーム]] (UWP) アプリの開発では基本ランタイムと、この特定のバージョンの追加ランタイムのみを使うことができる<ref>[https://docs.microsoft.com/en-us/windows/win32/xinput/xinput-versions XInput Versions - Windows applications | Microsoft Docs]</ref><ref>[https://docs.microsoft.com/en-us/windows/win32/xaudio2/xaudio2-versions XAudio2 Versions - Windows applications | Microsoft Docs]</ref>。 |
Windows 8.x以降は前者の基本ランタイムに加えて後者の追加ランタイムのうち特定のバージョン(XInput1_4.dllやXAudio2_8.dllなど)が最初からシステムコンポーネントとしてプリインストールされており、Windows 8/RT向けストアアプリ、Windows 8.1/RT 8.1向けストアアプリおよび[[ユニバーサルWindowsプラットフォーム]] (UWP) アプリの開発では基本ランタイムと、この特定のバージョンの追加ランタイムのみを使うことができる<ref>[https://docs.microsoft.com/en-us/windows/win32/xinput/xinput-versions XInput Versions - Windows applications | Microsoft Docs]</ref><ref>[https://docs.microsoft.com/en-us/windows/win32/xaudio2/xaudio2-versions XAudio2 Versions - Windows applications | Microsoft Docs]</ref>。 |
||
DirectXを使用したアプリケーションプログラムを実行する際、「xxx.dllが見つからなかったため、このアプリケーションを開始できませんでした。……」といったエラーに対処するには、DirectXランタイムのアップデートが必要になる<ref name="download_dx_rt_web"/><ref>{{Cite web|url= |
DirectXを使用したアプリケーションプログラムを実行する際、「xxx.dllが見つからなかったため、このアプリケーションを開始できませんでした。……」といったエラーに対処するには、DirectXランタイムのアップデートが必要になる<ref name="download_dx_rt_web"/><ref>{{Cite web|和書|url=https://www.4gamer.net/weekly/pc_manners/001/pc_manners_001.shtml|title=「PCゲームのお作法」第1回|accessdate=2013-08-16}}</ref><ref>{{Cite web|和書|url=https://www.4gamer.net/games/033/G003329/20110421001/|title=「DirectX Runtime」Webインストーラの2011年4月版が登場。今回もアップデートはとくになし|accessdate=2013-08-16}}</ref>。ただし、使用するOSによっては完全に実行不可能である場合もある。例えばWindows XPではDirectX 10以降を使用したアプリケーションは実行できない。また、Windows Vista/7/8.xではDirectX 12を利用することはできない。 |
||
== コンポーネント群 == |
== コンポーネント群 == |
||
28行目: | 28行目: | ||
** [[DirectWrite]]: Windows 7以降で利用可能な、新しい高品位テキスト描画API。バージョン1.0はWindows Vistaにもバックポートされた。 |
** [[DirectWrite]]: Windows 7以降で利用可能な、新しい高品位テキスト描画API。バージョン1.0はWindows Vistaにもバックポートされた。 |
||
** [[DirectDraw]]: [[コンピュータグラフィックス|2次元グラフィックス]](DirectX 7まで存在したが、DirectX 8以降はDirect3Dに吸収された)。 |
** [[DirectDraw]]: [[コンピュータグラフィックス|2次元グラフィックス]](DirectX 7まで存在したが、DirectX 8以降はDirect3Dに吸収された)。 |
||
** DirectComposition: Windows 8以降で利用可能な、変形やアニメーションなどを伴う高性能なビットマップ合成を可能にするAPI<ref>[https://learn.microsoft.com/en-us/windows/win32/directcomp/directcomposition-portal DirectComposition - Win32 apps | Microsoft Learn]</ref>。[[Desktop Window Manager|DWM]]機能の一部をアプリケーション側に解放し、シームレスな連携を可能にする<ref>[https://learn.microsoft.com/en-us/windows/win32/directcomp/architecture-and-components Architecture and components - Win32 apps | Microsoft Learn]</ref>。 |
|||
* DirectX Audio: DirectX 8からの名称。 |
* DirectX Audio: DirectX 8からの名称。 |
||
** [[DirectSound#XAudio| |
** [[DirectSound#XAudio|XAudio2]]: XboxのサウンドAPIであるXAudioから発展したもの。DirectSoundの後継。 |
||
** [[DirectSound#XAudio|X3DAudio]] |
*** [[DirectSound#XAudio|X3DAudio]]: XAudio2と組み合わせて使用される、空間音響ライブラリ。 |
||
** [[XACT]]: 更新終了。 |
** [[XACT]]: オーサリングツールを含む高レベルオーディオエンジン。更新終了。 |
||
** [[DirectSound]]: サウンド再生 |
** [[DirectSound]]: サウンド再生および録音。更新終了。 |
||
*** [[DirectSound|DirectSound3D]] (DS3D) : 3次元サウンド再生。 |
*** [[DirectSound|DirectSound3D]] (DS3D) : 3次元サウンド再生。 |
||
** {{仮リンク|DirectMusic|en|DirectMusic}}: DirectMusic Producerで作成された音楽トラックの再生。更新終了。 |
** {{仮リンク|DirectMusic|en|DirectMusic}}: DirectMusic Producerで作成された音楽トラックの再生。更新終了。 |
||
<!-- * DirectX Input --> |
<!-- * DirectX Input --> |
||
* [[XInput]]: Xbox 360およびXbox One専用ゲームコントローラーに対応するAPI。Windows上でもこれらのデバイスをコンソール同等に利用することが可能になる。 |
* [[XInput]]: Xbox 360およびXbox One専用ゲームコントローラーに対応するAPI。Windows上でもこれらのデバイスをコンソール同等に利用することが可能になる。 |
||
* [[DirectInput]]: [[キーボード (コンピュータ)|キーボード]]、[[マウス (コンピュータ)|マウス]]、[[ゲームパッド]]、[[ジョイスティック]]からの入力処理、およびフォースフィードバックを扱う。DirectX 8以降更新終了。[[ファーストパーソン・シュー |
* [[DirectInput]]: [[キーボード (コンピュータ)|キーボード]]、[[マウス (コンピュータ)|マウス]]、[[ゲームパッド]]、[[ジョイスティック]]からの入力処理、およびフォースフィードバックを扱う。DirectX 8以降更新終了。[[ファーストパーソン・シューティングゲーム|FPSゲーム]]開発のような用途であっても、キーボードやマウスはWM_INPUT (Raw Input) やWM_MOUSEMOVEなどを代わりに利用することが推奨されている<ref>[https://learn.microsoft.com/en-us/windows/win32/dxtecharts/taking-advantage-of-high-dpi-mouse-movement Taking Advantage of High-Definition Mouse Movement - Win32 apps | Microsoft Learn]</ref><ref>[https://learn.microsoft.com/ja-jp/previous-versions/direct-x/bb206183(v=vs.85) 高解像度マウス動作の使用 | Microsoft Learn]</ref>。 |
||
<!-- * DirectX Media --> |
<!-- * DirectX Media --> |
||
* [[DirectX Video Acceleration]] (DXVA) : 動画処理API。バージョン1.0はDirectShowの一部だったが、Windows Vistaから利用可能なバージョン2.0はDirectShowや[[Media Foundation]]からは独立している。 |
* [[DirectX Video Acceleration]] (DXVA) : 動画処理API。バージョン1.0はDirectShowの一部だったが、Windows Vistaから利用可能なバージョン2.0はDirectShowや[[Media Foundation]]からは独立している。 |
||
* [[DirectShow]]: 各種[[音声]]・[[動画]]の再生・作成。<!--APIの提供はDirectX SDKから[[Microsoft Windows SDK|Windows SDK]]に移行された。--><!-- Windows SDK 8.0以降はすべてのDirectX APIがDXSDKからWinSDKに移管されたので、今となってはどうでもよい話。 -->後継として[[Media Foundation]]が存在する。 |
* [[DirectShow]]: 各種[[音声]]・[[動画]]の再生・作成。<!--APIの提供はDirectX SDKから[[Microsoft Windows SDK|Windows SDK]]に移行された。--><!-- Windows SDK 8.0以降はすべてのDirectX APIがDXSDKからWinSDKに移管されたので、今となってはどうでもよい話。 -->後継として[[Media Foundation]]が存在する。 |
||
* DirectAnimation<ref>[https:// |
* DirectAnimation: 2D/3D Webアニメーション用<ref>[https://news.microsoft.com/1997/12/10/microsoft-releases-directanimation/ Microsoft Releases DirectAnimation - Stories]</ref><ref>[https://learn.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-6.0/aa230273(v=vs.60) DirectAnimation Samples | Microsoft Learn]</ref>。[[Internet Explorer]] 4.0以降に統合されていた。 |
||
<!-- * {{要出典範囲|DirectTransform: Webのインタラクティブ性と高レベルな3DグラフィックスのためのDirect3D Retained Mode。|date=2015年8月}} --><!-- MSDNに公式情報が見つからないため、マイクロソフト純正のDirectXファミリーではない可能性がある。 --> |
<!-- * {{要出典範囲|DirectTransform: Webのインタラクティブ性と高レベルな3DグラフィックスのためのDirect3D Retained Mode。|date=2015年8月}} --><!-- MSDNに公式情報が見つからないため、マイクロソフト純正のDirectXファミリーではない可能性がある。 --> |
||
* DirectX Media Objects<ref>[https://msdn.microsoft.com/en-us/library/windows/desktop/dd375474.aspx DirectX Media Objects (Windows)]</ref>: エンコーダー、デコーダー、エフェクトといったストリーミングオブジェクトのサポート。 |
* DirectX Media Objects<ref>[https://msdn.microsoft.com/en-us/library/windows/desktop/dd375474.aspx DirectX Media Objects (Windows)]</ref>: エンコーダー、デコーダー、エフェクトといったストリーミングオブジェクトのサポート。 |
||
* {{仮リンク|DirectPlay|en|DirectPlay}}: ネットワーク通信。DirectX 8以降更新終了。 |
* {{仮リンク|DirectPlay|en|DirectPlay}}: ネットワーク通信。DirectX 8以降更新終了。 |
||
* |
* DirectSetup: DirectXランタイムのセットアップ用であり、正確にはAPIではない。 |
||
* DirectStorage: 最新の[[NVM Express|NVMe]]ストレージデバイスに最適化された、低オーバーヘッドのI/Oを提供するAPI<ref>[https://learn.microsoft.com/ja-jp/gaming/gdk/_content/gc/system/overviews/directstorage-toc DirectStorage (コンテンツ) - Microsoft Game Core | Microsoft Learn]</ref>。DirectStorage 1.1では、Direct3D 12上に構築された、圧縮データをGPUで展開する機能もサポートする<ref>[https://news.mynavi.jp/article/20221110-2509148/ Microsoft、GPU展開でゲームのロード時間を大幅短縮する「DirectStorage 1.1」 | マイナビニュース]</ref><ref>[https://github.com/microsoft/DirectStorage GitHub - microsoft/DirectStorage: DirectStorage for Windows is an API that allows game developers to unlock the full potential of high speed NVMe drives for loading game assets.]</ref>。[[Xbox Series X/S]]およびWindows 10/[[Windows 11]]で利用可能。 |
|||
DirectX APIは基本的にSide-by-Sideであり、複数のバージョンが競合することなく共存できるため、例えばDirectX 11がインストールされている環境でもDirectX 10およびそれ以前のバージョンを利用することは可能である。また、更新が終了したAPIのうち、OSに標準インストールされているコンポーネントに関しては、[[Microsoft Windows 10|Windows 10]]などの新しいOSでも引き続きデスクトップアプリケーションにて標準的に利用すること自体は可能だが、Direct3D 8などのようにネイティブ[[64ビット]]版が用意されていないものも存在する<ref>[https:// |
DirectX APIは基本的にSide-by-Sideであり、複数のバージョンが競合することなく共存できるため、例えばDirectX 11がインストールされている環境でもDirectX 10およびそれ以前のバージョンを利用することは可能である。また、更新が終了したAPIのうち、OSに標準インストールされているコンポーネントに関しては、[[Microsoft Windows 10|Windows 10]]などの新しいOSでも引き続きデスクトップアプリケーションにて標準的に利用すること自体は可能だが、Direct3D 8などのようにネイティブ[[64ビット]]版が用意されていないものも存在する<ref>[https://learn.microsoft.com/en-us/windows/win32/dxtecharts/sixty-four-bit-programming-for-game-developers 64-bit programming for Game Developers - Win32 apps | Microsoft Learn]</ref>。 |
||
== リリース履歴 == |
== リリース履歴 == |
||
DirectX 12およびDirectX 11.3は[[Windows 10]] (Windows 10 for Desktop, Windows 10 for Xbox One, Windows 10 for Phone) 専用のバージョンである。PC用Windows 10のほか、[[Xbox One]]用Windows 10にも対応する<ref>[https://developer.microsoft.com/ja-jp/windows/games/technology Windows 10 ゲームのテクノロジ - Windows アプリの開発]</ref>。DirectX 12は[[Windows Phone]] ([[Windows 10 Mobile]]/[[Windows 10 IoT]]) にも対応することが報じられている<ref>[ |
DirectX 12およびDirectX 11.3は[[Windows 10]] (Windows 10 for Desktop, Windows 10 for Xbox One, Windows 10 for Phone) 専用のバージョンである。PC用Windows 10のほか、[[Xbox One]]用Windows 10にも対応する<ref>[https://developer.microsoft.com/ja-jp/windows/games/technology Windows 10 ゲームのテクノロジ - Windows アプリの開発]</ref>。DirectX 12は[[Windows Phone]] ([[Windows 10 Mobile]]/[[Windows 10 IoT]]) にも対応することが報じられている<ref>[https://pc.watch.impress.co.jp/docs/column/kaigai/641071.html 【後藤弘茂のWeekly海外ニュース】GPUの進化に対応したMicrosoftの次世代API「DirectX 12」の背景 - PC Watch]</ref>が、DirectX 12/WDDM 2.0に対応するデバイスドライバーおよび機能レベル11_0以上に対応するハードウェアが必須となる。 |
||
DirectX 11.2は[[Microsoft Windows 8#Windows 8.1|Windows 8.1]]以降/[[Xbox One]]専用のバージョンである<ref name="4gamer20130705055">{{Cite web|url= |
DirectX 11.2は[[Microsoft Windows 8#Windows 8.1|Windows 8.1]]以降/[[Xbox One]]専用のバージョンである<ref name="4gamer20130705055">{{Cite web|和書|url=https://www.4gamer.net/games/126/G012689/20130705055/|title=Microsoftの開発者向けイベント「Build 2013」で見えたWindows 8.1。「DirectX 11.2」とUI面の改良がポイントに|accessdate=2013-08-16}}</ref>。 |
||
[[Microsoft Windows 7|Windows 7]](一部DirectX 11.1に対応)/[[Microsoft Windows Vista|Windows Vista]]においてはDirectX 11.0、[[Microsoft Windows XP|Windows XP]]・[[Microsoft Windows 2000|2000]]/[[Microsoft Windows Me|Me]]/[[Microsoft Windows 98|98/98SE]]はDirectX 9(9.0c)、[[Microsoft Windows 95|Windows 95]]はDirectX 8(8.0a)が最新バージョンとなる。ただし[[PC-9800シリーズ]]の場合はDirectX 7(7.0a)が最新バージョンであり、それ以上のバージョンは制限を解除しないとインストールできないようになっている<ref>{{cite web|url=http://www.vector.co.jp/soft/win95/hardware/se172696.html|title=DirectX8 For NEC98|publisher=[[ベクター (企業)|ベクター]]|accessdate=2013-08-17}}</ref>。また[[Microsoft Windows NT 4.0|Windows NT 4.0]]ではSP3以降に付随するDirectX 3相当機能が最新バージョンとなる。 |
[[Microsoft Windows 7|Windows 7]](一部DirectX 11.1に対応)/[[Microsoft Windows Vista|Windows Vista]]においてはDirectX 11.0、[[Microsoft Windows XP|Windows XP]]・[[Microsoft Windows 2000|2000]]/[[Microsoft Windows Me|Me]]/[[Microsoft Windows 98|98/98SE]]はDirectX 9(9.0c)、[[Microsoft Windows 95|Windows 95]]はDirectX 8(8.0a)が最新バージョンとなる。ただし[[PC-9800シリーズ]]の場合はDirectX 7(7.0a)が最新バージョンであり、それ以上のバージョンは制限を解除しないとインストールできないようになっている<ref>{{cite web|url=http://www.vector.co.jp/soft/win95/hardware/se172696.html|title=DirectX8 For NEC98|publisher=[[ベクター (企業)|ベクター]]|accessdate=2013-08-17}}</ref>。また[[Microsoft Windows NT 4.0|Windows NT 4.0]]ではSP3以降に付随するDirectX 3相当機能が最新バージョンとなる。 |
||
一部のバージョンに関しては、Windows Updateや[[Windowsストア]]を通じてOSが対応する最新のDirectXを更新プログラムとともに入手することが可能である。例えばWindows XPの場合、Windows Update経由でSP2と同時にDirectX 9.0cを入手できる。Windows Vistaの場合、SP1と同時にDirectX 10.1を、SP2+Platform Updateと同時にDirectX 11を入手できる<ref name="how_to_install_dx"/>。なお、DirectX 10以降は、[[Windows Display Driver Model]]の導入を始めとして、Windowsのグラフィックスアーキテクチャに大規模な修正が加えられたことから、 |
一部のバージョンに関しては、Windows Updateや[[Windowsストア]]を通じて、OSが対応する最新のDirectXをサービスパックなどの機能更新プログラムとともに入手することが可能である。例えばWindows XPの場合、Windows Update経由でSP2と同時にDirectX 9.0cを入手できる。Windows Vistaの場合、SP1と同時にDirectX 10.1を、またSP2+Platform Updateと同時にDirectX 11を入手できる<ref name="how_to_install_dx"/>。なお、DirectX 10以降は、[[Windows Display Driver Model]]の導入を始めとして、Windowsのグラフィックスアーキテクチャに大規模な修正が加えられたことから、Windows XPなどの旧Windows製品では利用できない。新しいOSでは、対応する最新バージョンよりも古いバージョンのDirectXに関しても基本的にすべて利用可能である。 |
||
<!-- |
<!-- |
||
HACK: 「2016年3月31日 (木) 05:22」に、勝手にテーブルが昇順から降順に変更されたが、意図が不明。むしろ時系列に並ぶ昇順のほうが論理的で好ましいはず。 |
HACK: 「2016年3月31日 (木) 05:22」に、勝手にテーブルが昇順から降順に変更されたが、意図が不明。むしろ時系列に並ぶ昇順のほうが論理的で好ましいはず。 |
||
77行目: | 79行目: | ||
|- |
|- |
||
| DirectX 1.0 |
| DirectX 1.0 |
||
| ゲーム |
| ゲーム開発用のAPI集'''Game SDK'''として発表された。DirectDraw、DirectSound、DirectPlayが含まれていた<ref name="craig_eisler_dx_part1"/>。 |
||
| [[1995年]]9月30日<!-- 明確な言及はないが、Craig Eislerのブログの文章および画像から推察。日本時間では10月1日になる。 --> |
|||
| [[1995年]]10月 |
|||
|- |
|- |
||
| DirectX 2.0 |
| DirectX 2.0 |
||
84行目: | 86行目: | ||
| [[1996年]]6月 |
| [[1996年]]6月 |
||
|- |
|- |
||
| DirectX 3.0<ref>{{Cite web |
| DirectX 3.0<ref>{{Cite web|和書|date=1996-9-26 |url=https://pc.watch.impress.co.jp/docs/article/960927/dx3.htm |title=米Microsoft、「DirectX 3.0」を発表 |publisher=PC Watch |accessdate=2012-05-09}}</ref> |
||
| DirectSound3D登場、DirectInputの統合。[[Windows NT]] 4.0ではSP3以降に同梱。 |
| DirectSound3D登場、DirectInputの統合。[[Windows NT]] 4.0ではSP3以降に同梱。 |
||
| 1996年[[9月25日]] |
| 1996年[[9月25日]] |
||
103行目: | 105行目: | ||
|- |
|- |
||
| DirectX Media |
| DirectX Media |
||
| DirectShowおよびDirectAnimationのみ頒布。「DirectX」は総称だが、特に区別する場合は「DirectX Foundation」「DirectX Media」と使い分ける |
| DirectShowおよびDirectAnimationのみ頒布。「DirectX」は総称だが、特に区別する場合は「DirectX Foundation」「DirectX Media」と使い分けることがある。 |
||
| 1997年[[12月1日]] |
| 1997年[[12月1日]] |
||
|- |
|- |
||
135行目: | 137行目: | ||
|- |
|- |
||
| DirectX 9.0 |
| DirectX 9.0 |
||
| 各コンポーネントの機能強化が中心。高レベルシェーダー言語[[HLSL]]が導入された。また、マイナーチェンジとなるDirectX 9.0cが |
| 各コンポーネントの機能強化が中心。高レベルシェーダー言語[[HLSL]]が導入された。また、マイナーチェンジとなるDirectX 9.0cがWindows XP SP2に搭載された。Windows 2000・Me・98用に単体配布もされている。この頃から、DirectXのバージョンが上がっても、更新されるのはDirect3Dだけとなりつつあり、DirectX 9.0といえばDirect3D 9.0のことを指すことになる。 |
||
| [[2002年]][[12月20日]] |
| [[2002年]][[12月20日]] |
||
|- |
|||
| Direct3D 9.0Ex |
|||
| [[Microsoft Windows Vista|Windows Vista]]以降に搭載されている、Direct3D 9.0の改良版。Windows VistaのWindows AeroはDirect3D 10ではなく9Exで描画されている。 |
|||
| 2007年 |
|||
|- |
|- |
||
| DirectX 10.0 |
| DirectX 10.0 |
||
| Windows Vista以降でのみ利用可能。[[DXGI]]やジオメトリシェーダーが導入された。 |
| [[Microsoft Windows Vista|Windows Vista]]以降でのみ利用可能。[[DXGI]]やジオメトリシェーダーが導入された。 |
||
| |
| 2006年 |
||
|- |
|- |
||
| DirectX 10.1 |
| DirectX 10.1 |
||
151行目: | 149行目: | ||
|- |
|- |
||
| DirectX 11.0 |
| DirectX 11.0 |
||
| Windows Vista SP2 + Platform UpdateとWindows 7以降で利用可能。高精細な描画を可能にする[[テッセレーション]]のサポートや新たな命令セットが追加されたほか、GPUコンピューティングを実現する[[DirectCompute]] (DirectX Compute Shader)、マルチコアCPUに対応したマルチスレッディング処理、HDR圧縮などの新機能を実装している。高レベル2DグラフィックスAPIである[[Direct2D]]なども含まれる。 |
| Windows Vista SP2 + Platform Updateと[[Microsoft Windows 7|Windows 7]]以降で利用可能。高精細な描画を可能にする[[テッセレーション]]のサポートや新たな命令セットが追加されたほか、GPUコンピューティングを実現する[[DirectCompute]] (DirectX Compute Shader)、マルチコアCPUに対応したマルチスレッディング処理、HDR圧縮などの新機能を実装している。高レベル2DグラフィックスAPIである[[Direct2D]]なども含まれる。 |
||
| 2009年 |
| 2009年 |
||
|- |
|- |
||
| DirectX 11.1 |
| DirectX 11.1 |
||
| [[Microsoft Windows 8|Windows 8]]以降で利用可能。[[Windowsランタイム|WinRT]]相互運用やDirect2Dの大幅な機能強化なども含まれる。一部機能は |
| [[Microsoft Windows 8|Windows 8]]以降で利用可能。[[Windowsランタイム|WinRT]]相互運用やDirect2Dの大幅な機能強化なども含まれる。一部機能はWindows 7にもPlatform Updateとしてバックポートされた<ref>[https://walbourn.github.io/directx-11-1-and-windows-7/ DirectX 11.1 and Windows 7 | Games for Windows and the DirectX SDK blog]</ref>。 |
||
| 2012年 |
| 2012年 |
||
|- |
|- |
||
| DirectX 11.2 |
| DirectX 11.2 |
||
| [[Microsoft Windows 8#Windows 8.1|Windows 8.1]] |
| [[Microsoft Windows 8#Windows 8.1|Windows 8.1]]以降と[[Xbox One]]でのみ利用可能<ref name="4gamer20130705055" />。 |
||
| 2013年 |
| 2013年 |
||
|- |
|- |
||
| DirectX 11.3 |
| DirectX 11.3 |
||
| [[Microsoft Windows 10|Windows 10]]以降でのみ利用可能。DirectX 12に搭載される新機能の一部は、同時期に提供される従来からの高レベルAPIのマイナーチェンジとなるDirectX 11.3にも搭載される<ref>[http://www.pcgamer.com/2014/09/19/directx-12s-new-rendering-features-are-coming-to-directx-11-3-too/ DirectX 12's new rendering features are coming to DirectX 11.3 too | PC Gamer]</ref><ref>[ |
| [[Microsoft Windows 10|Windows 10]]以降でのみ利用可能。DirectX 12に搭載される新機能の一部は、同時期に提供される従来からの高レベルAPIのマイナーチェンジとなるDirectX 11.3にも搭載される<ref>[http://www.pcgamer.com/2014/09/19/directx-12s-new-rendering-features-are-coming-to-directx-11-3-too/ DirectX 12's new rendering features are coming to DirectX 11.3 too | PC Gamer]</ref><ref>[https://devblogs.microsoft.com/directx/directx-12-lights-up-nvidias-maxwell-launch/ DirectX 12 Lights Up NVIDIA’s Maxwell Launch - DirectX Developer Blog]</ref><ref>[https://www.4gamer.net/games/033/G003329/20141020017/ 西川善司の3DGE:新しく来るDirectXは「12」だけじゃない。突如浮上した「DirectX 11.3」とは何か? - 4Gamer.net]</ref>。 |
||
| 2015年 |
| 2015年 |
||
|- |
|- |
||
171行目: | 169行目: | ||
|- |
|- |
||
| DirectX 12 Ultimate |
| DirectX 12 Ultimate |
||
| |
| Windows 10バージョン2004以降でのみ利用可能。 |
||
| 2020年 |
| 2020年 |
||
|} |
|} |
||
DirectX 4はリリースされなかった。Raymond Chenの著書''The Old New Thing''(邦訳:Windowsプログラミングの極意 歴史から学ぶ実践的Windowsプログラミング!)によると、DirectX 3がリリースされた後に、マイクロソフトは4と5の開発を同時に始めた。 |
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をスキップすることにした<ref>{{Cite web|date=2004-01-22|url=https://devblogs.microsoft.com/oldnewthing/20040122-00/?p=40963|title=What happened to DirectX 4?|work=The Old New Thing|author=Raymond Chen|accessdate=2022-12-03}}</ref>。 |
||
== 歴史 == |
== 歴史 == |
||
[[1994年]]終盤、[[マイクロソフト]]は[[Microsoft Windows 95|Windows 95]]をリリースしようとしていたが、当時の[[プログラマ]]は、Windows 95よりもむしろ[[MS-DOS]]の方がゲームプログラミングに適していると考える傾向にあった<ref>{{Cite journal|url= |
[[1994年]]終盤、[[マイクロソフト]]は[[Microsoft Windows 95|Windows 95]]をリリースしようとしていたが、当時の[[プログラマ]]は、Windows 95よりもむしろ[[MS-DOS]]の方がゲームプログラミングに適していると考える傾向にあった<ref>{{Cite journal|url=https://chrishecker.com/images/6/66/Gdmwing.pdf|first=Chris|last=Hecker|title=Tour of WinG|journal=Game Developer|date=1994-09|publisher=CMP / United Business Media}}</ref><ref name="shacknews_interview">{{cite web|url=https://www.shacknews.com/article/46338/alex-st-john-interview|title=Alex St John Interview|last=David|first=Carddock|date=2007-03-28|publisher=Shack News|accessdate=2014-01-01}}</ref>。「どのようなプログラムを作れるか」というのはOSの評価基準として大きなウェイトを占める。マイクロソフトの三人の社員、クレイグ・アイスラー (Craig Eisler)、アレックス・ジョン (Alex St. John)、エリック・イングシュトローム (Eric Engstrom) は、この傾向を危惧していた。 |
||
|first=Chris|last=Hecker|title=Tour of WinG|journal=Game Developer|date=1994年9月|publisher=CMP / United Business Media }}</ref><ref>{{cite web |url=http://www.shacknews.com/article/46338/alex-st-john-interview|title=Alex St John Interview|last=David|first=Carddock|date=28 March 2007|publisher=Shack News|accessdate=2014-01-01}}</ref>。「どのようなプログラムを作れるか」というのはOSの評価基準として大きなウェイトを占める。マイクロソフトの三人の社員、クレイグ・アイスラー、アレックス・ジョン、エリック・イングシュトロームは、この傾向を危惧していた。 |
|||
MS-DOSの環境下では、プログラムはビデオカード、キーボード、マウス、サウンドカードなど様々なシステムパーツに直接アクセスできていたが、Windows 95ではメモリ保護のためにこれらの直接のアクセスが制限されてしまっていた。あと数 |
MS-DOSの環境下では、プログラムはビデオカード、キーボード、マウス、サウンドカードなど様々なシステムパーツに直接アクセスできていたが、Windows 95ではメモリ保護のためにこれらの直接のアクセスが制限されてしまっていた。あと数か月でWindows 95がリリースされるという中で、マイクロソフトはWindows 95におけるプログラムの自由度を上げる仕組みを作り上げなければならなかった。アイスラーとジョンとイングシュトロームの三人はこれらの問題解決に乗り出した。こうして作られたのがDirectXである。 |
||
<!-- コードネームについてはいずれも心情的には極めて不愉快・不謹慎で忌々しい話だが、出典に基づいた中立的・客観的事実として記載しておく。[[Wikipedia:中立的な観点]] --> |
|||
⚫ | DirectXの最初のバージョンはWindows |
||
DirectXの開発プロジェクトには「The Manhattan Project」というコードネームが付けられた。後年の{{仮リンク|Shacknews|en|Shacknews}}によるアレックス・ジョンへのインタビューによると、これは[[第二次世界大戦]]における[[原子爆弾]]の開発プロジェクト「[[マンハッタン計画]]」をなぞったもので、日本製の[[ゲームコンソール]]{{efn|当時ゲームの実行プラットフォームとして世界を席巻していたのは[[任天堂]]や[[セガ]]に代表される日本企業のゲーム専用機だった。}}をPCで(究極的にはXboxで)押しのけるための取り組みであったからだという<ref name="shacknews_interview"/>。またプロトタイプのDirectXのロゴには、[[ハザードシンボル|放射能標識]]に似たものが用いられていたが、マイクロソフトの広報によって差し止められ、「X」の形状にするために脚を1本加えたロゴ<ref>[https://github.com/microsoft/DxCapsViewer GitHub - microsoft/DxCapsViewer: DirectX Capabilities Viewer utility (dxcapsviewer.exe)]</ref>に変更された{{efn|その後、DirectX 8では稲妻のX、DirectX 9では緑のXがロゴとして使われるようになったため、この旧ロゴはほとんど目にすることがなくなっている<ref>[https://diarywind.com/blog/e/origin-of-directx-radiation-logo.html DirectXの旧ロゴが放射能注意のシンボルに似ているわけ - Diary on wind]</ref>。}}。なお、その後もバージョン6までのDirectXには[[大量破壊兵器]]にちなんだと推測される開発コードネームが付けられていた<ref>[https://devblogs.microsoft.com/oldnewthing/20190930-00/?p=102942 Where did DirectX code names come from? - The Old New Thing]</ref>。 |
|||
DirectXの開発メンバーたちは、社内で「Beastie Boys」(野蛮な若者)と呼ばれ、クビの圧力にさらされながら開発を進めた。マイクロソフトの経営陣は当初、Windowsをゲームプラットフォームにする気がなかったため、彼らの活動を評価していなかった<ref>[https://hbol.jp/pc/236480/ DirectXの生みの親の1人が55歳で死去。社内で「Beastie Boys」と呼ばれた反骨者たちの功績 | ハーバー・ビジネス・オンライン]</ref>。 |
|||
⚫ | DirectXの登場より前に、マイクロソフトは[[OpenGL]]をWindows NTに搭載してしまっていた<ref>{{Cite journal|first=Jeff|last=Prosise|title=Advanced 3-D Graphics for Windows NT 3.5:Introducing the OpenGL Interface, Part I|journal=Microsoft Systems Journal Volume 9 Issue 10|date=1994年10月|publisher=Microsoft }}</ref><ref>{{cite web|title=OpenGL Interface in Windows NT 3.5|url=http://support.microsoft.com/kb/124034|publisher=[[マイクロソフト]]|accessdate=1 April 2014|date=31 October 2006 }}</ref>。OpenGLは、動作に(当時においては)ハイスペックな環境が必要だった上に、用途も[[CAD]]やエンジニアリングに限られていた。そんな中[[Direct3D]]は、ゲーム用としてはオーバースペック気味だったOpenGLの軽量版として設計され、ここからDirect3DとOpenGLとの、ユーザー同士の対立が始まった。Windows専用だったDirect3Dはマイクロソフトの[[3E戦略]](embrace, extend, extinguish―吸収、拡大、根絶)だとOpenGLユーザーから非難されることとなった。しかしDirectXには、サウンドやジョイスティックなど、OpenGLがカバーできない機能が含まれていたため、DirectX上の他のAPIとOpenGLとを組み合わせて使われることが多かった。後にはOpenGLと[[SDL]]の組み合わせも多い。OpenGLはDirect3Dが先行して実装したジオメトリシェーダーやコンピュートシェーダーといった機能を数年遅れで取り入れるなど、Direct3Dの影響を受けている部分がある<ref>[http://www.igda.jp/modules/bulletin/index.php?page=article&storyid=97 IGDA Japan chapter - Khronos Group、OpenGL 3.2を発表 12ヵ月で3回目のバージョンアップ] Direct3Dアプリケーションからの移植性に関する記述がある。ジオメトリシェーダーを搭載したDirectX 10のリリースは2006年、対するOpenGL 3.2のリリースは2009年。</ref><ref>[ |
||
⚫ | 1995年8月(日本では同年11月)にWindows 95がリリースされた後、DirectXの最初のバージョンは「Windows 95 Game SDK」として[[1995年]][[9月]]にリリースされた。これは[[Microsoft Windows 3.x#Windows 3.1|Windows 3.1]]にあった[[WinG]] APIとDCI (Display Control Interface) を32ビット用に移植したものである。このとき、マイクロソフトは[[ATI Technologies|ATI]]の開発チームからゲームグラフィックの基本部分についての技術提供を受けた。これ以降、アイスラー(開発リーダー)、ジョン、イングシュトローム(プログラム責任者)の三人のチームを中心としてDirectXの開発が進められ、最終的にはこれ以降のすべての[[Microsoft Windows|Windows]]においてDirectXがマルチメディア機能を担うことになった。DirectX 1から5までの開発でのドタバタは、アイスラーのブログに詳しく書かれている<ref name="craig_eisler_dx_part1">[http://craig.theeislers.com/2006/02/20/directx-then-and-now-part-1/ Craig's Musings: DirectX Then and Now (Part 1)]</ref>。 |
||
⚫ | [[ゲーム機]]で |
||
⚫ | DirectXの登場より前に、マイクロソフトは[[OpenGL]]をWindows NTに搭載してしまっていた<ref>{{Cite journal|first=Jeff|last=Prosise|title=Advanced 3-D Graphics for Windows NT 3.5:Introducing the OpenGL Interface, Part I|journal=Microsoft Systems Journal Volume 9 Issue 10|date=1994年10月|publisher=Microsoft }}</ref><ref>{{cite web|title=OpenGL Interface in Windows NT 3.5|url=http://support.microsoft.com/kb/124034|publisher=[[マイクロソフト]]|accessdate=1 April 2014|date=31 October 2006 }}</ref>。OpenGLは、動作に(当時においては)ハイスペックな環境が必要だった上に、用途も[[CAD]]やエンジニアリングに限られていた。そんな中[[Direct3D]]は、ゲーム用としてはオーバースペック気味だったOpenGLの軽量版として設計され、ここからDirect3DとOpenGLとの、ユーザー同士の対立が始まった。Windows専用だったDirect3Dはマイクロソフトの[[3E戦略]](embrace, extend, extinguish―吸収、拡大、根絶)だとOpenGLユーザーから非難されることとなった。しかしDirectXには、サウンドやジョイスティックなど、OpenGLがカバーできない機能が含まれていたため、DirectX上の他のAPIとOpenGLとを組み合わせて使われることが多かった。後にはOpenGLと[[SDL]]の組み合わせも多い。OpenGLはDirect3Dが先行して実装したジオメトリシェーダーやコンピュートシェーダーといった機能を数年遅れで取り入れるなど、Direct3Dの影響を受けている部分がある<ref>[http://www.igda.jp/modules/bulletin/index.php?page=article&storyid=97 IGDA Japan chapter - Khronos Group、OpenGL 3.2を発表 12ヵ月で3回目のバージョンアップ] Direct3Dアプリケーションからの移植性に関する記述がある。ジオメトリシェーダーを搭載したDirectX 10のリリースは2006年、対するOpenGL 3.2のリリースは2009年。</ref><ref>[https://www.4gamer.net/games/107/G010729/20121015050/ 4Gamer.net ― OpenGLはDirectX 11を超え,OpenGL ESは据え置き型ゲーム機と同等以上に。Khronosの最新動向レポート] DirectX 11のCompute Shader仕様をそのまま取り入れた旨の記述がある。</ref>。 |
||
⚫ | PCだけでなくコンシューマーやアーケードの[[ゲーム機]]でも、OSとしてWindowsを採用し、ゲーム開発用APIとしてDirectXが利用されるケースも出始めた。1998年(北米では1999年)に登場した[[セガ]]の[[ドリームキャスト]]では、[[Microsoft Windows Embedded CE|Windows CE]]とともにDirectX 5.0のカスタマイズ版が世界で初めて用いられた<ref>[https://pc.watch.impress.co.jp/docs/article/980521/sega.htm セガ、Windows CEをベースとした新世代ゲーム機「Dreamcast」を発表]</ref><ref>[http://wince.goo.ne.jp/Review/Katsuo/rally2/dragon2.htm WindowsCE SDK for Dreamcast]{{リンク切れ|date=2024-08}}</ref>。その後、WindowsとDirectXは2001年(日本では2002年)に登場したマイクロソフトの初代[[Xbox (ゲーム機)|Xbox]]でも採用された。OSはWindows 2000を軽量化したカスタマイズ版だが、[[ハードディスクドライブ|HDD]]ではなく各ゲームのDVD-ROMから読み込んでブートする形式だった<ref>[https://pc.watch.impress.co.jp/docs/article/20000405/kaigai01.htm X-Box解析シリーズ「OSとCPU編」 | 後藤弘茂のWeekly海外ニュース]</ref>{{efn|よく似た技術に[[Windows プレインストール環境|Windows PE]]があり、WinPEはCDやUSBメモリから起動することもできる。}}。XboxのコンソールAPIはマイクロソフトと[[NVIDIA]](Xboxのカスタムグラフィックスチップの開発元)で共同開発された。Xbox APIはDirectX 8.1に近いが、コンソール上からアップデートができないところがPCや他のコンソールと異なる。XboxのコードネームはDirectXboxだったが、商品名は短縮してXboxとなった<ref>J. Allard, [http://www.pcpro.co.uk/news/55995/games-interview-xbox-supremo-allard-on-the-future-of-microsofts-console-part-ii.html PC Proのインタビュー] 2004年4月</ref>。 |
||
2001年にリリースされたWindows XPには、DirectX 8.1が標準搭載された。 |
|||
=== DirectX 9のリリース === |
=== DirectX 9のリリース === |
||
2002年にマイクロソフトは、以前よりもはるかに長いシェーダープログラムを扱えるシェーダーモデル2.0(頂点シェーダー2.0、ピクセルシェーダー2.0)と高級シェーディング言語[[HLSL]]をサポートしたDirectX 9をリリースした。2004年8月にはさらに機能を強化したシェーダーモデル3.0を導入したDirectX 9.0cをリリースし、それ以降もDirectX一式の更新 |
2002年にマイクロソフトは、以前よりもはるかに長いシェーダープログラムを扱えるシェーダーモデル2.0(頂点シェーダー2.0、ピクセルシェーダー2.0)と高級シェーディング言語[[HLSL]]をサポートしたDirectX 9をリリースした。2004年8月にはさらに機能を強化したシェーダーモデル3.0を導入したDirectX 9.0cをリリースし、それ以降もD3DXやXAudio2といった拡張ライブラリやOS非標準コンポーネントを中心にDirectX SDKおよびエンドユーザーランタイム一式の更新が続けられた。 |
||
DirectX SDK February 2005を最後に、[[DirectShow]]はDirectX SDKから取り除かれ、代わりに[[Microsoft Windows SDK|Microsoft Platform SDK]]へ移動された(DirectX SDK April 2005以降にはDirectShow関連ファイルが含まれない)。しかしPlatform SDKに付属するDirectShowのサンプルをビルドするためにはDirectX SDKが必要である<ref>[ |
DirectX SDK February 2005を最後に、[[DirectShow]]はDirectX SDKから取り除かれ、代わりに[[Microsoft Windows SDK|Microsoft Platform SDK]]へ移動された(DirectX SDK April 2005以降にはDirectShow関連ファイルが含まれない)。しかしPlatform SDKに付属するDirectShowのサンプルをビルドするためにはDirectX SDKが必要である<ref>[https://learn.microsoft.com/en-us/windows/win32/directshow/directshow-samples DirectShow Samples - Win32 apps | Microsoft Learn]</ref>。<!-- NOTE: DirectShowはDirectXファミリーから取り除かれたわけではない。当時Direct3D関連のアップデートが激しかったDirectX SDKから、DirectShowのヘッダーとライブラリおよびサンプルが取り除かれたというだけの話。 --> |
||
2005年に登場した[[Xbox 360]]には、Windows 2000のカスタム版が搭載された。GPU (Xenos) はATI製で、機能的にはDirectX 9.0c世代だが、DirectX 10世代GPUの特徴である統合型シェーダーアーキテクチャを先行して採用していた<ref>[https://news.mynavi.jp/article/graphics-5/ 3Dグラフィックス・マニアックス(5) GPUとシェーダ技術の基礎知識(5) | マイナビニュース]</ref>。 |
|||
=== DirectX 10のリリース === |
=== DirectX 10のリリース === |
||
2006年にリリースされたDirectX 10は、[[Windows Display Driver Model|WDDM]]/[[Desktop Window Manager|DWM]]/[[DXGI]] 1.0とともにWindows Vista専用として提供され、Windows XP以前のOSにはバックポートされなかった。 |
2006年にリリースされたDirectX 10は、[[Windows Display Driver Model|WDDM]]/[[Desktop Window Manager|DWM]]/[[DXGI]] 1.0とともにWindows Vista専用として提供され、Windows XP以前のOSにはバックポートされなかった。 |
||
なお、Windows Vista以降には、Direct3D 10とともに、WDDMに対応したDirect3D 9の改良版としてDirect3D 9Exも搭載されている。Windows Vistaの[[Windows Aero]]はDirect3D 10ではなく9Exで描画されており、グラフィックスハードウェアがDirect3D 10(シェーダーモデル4.0)に対応していなくとも、Direct3D 9(シェーダーモデル2.0/3.0)世代のハードウェアとWDDM 1.0に対応したデバイスドライバーがあればAeroが利用可能となっている。Direct3D 9ExはのちにWindows 7でフリップモードが追加されている<ref>[https://learn.microsoft.com/ja-jp/windows/win32/direct3darticles/direct3d-9ex-improvements Direct3D 9Ex の機能強化 - Win32 apps | Microsoft Learn]</ref>。 |
|||
⚫ | |||
⚫ | |||
2008年にはWindows Vista SP1と同時に、DirectX 10のマイナーバージョンアップとしてDirectX 10.1がリリースされた<ref>[http://www.dosv.jp/other/0804/03.htm DOS/V POWER REPORT | Impress Japan]</ref>。 |
2008年にはWindows Vista SP1と同時に、DirectX 10のマイナーバージョンアップとしてDirectX 10.1がリリースされた<ref>[http://www.dosv.jp/other/0804/03.htm DOS/V POWER REPORT | Impress Japan]</ref>。 |
||
=== DirectX 11のリリース === |
=== DirectX 11のリリース === |
||
2009年、Windows 7と同時にDirectX 11がリリースされた。DirectX 11のうち、[[GPGPU]]のために導入されたAPIである[[DirectCompute]]については、当初はDirectX 11(シェーダーモデル5.0)世代のハードウェアのみに対して提供される予定だったが、2008年11月に開催されたハードウェア技術者向け国際会議「WinHEC 2008」にて「DirectX 10世代のハードウェアでもサポートする」との発表があった。最終的に、DirectX 10.x(シェーダーモデル4.x)世代の[[Graphics Processing Unit|GPU]]でも、DirectX 11 APIを通してDirectComputeが利用できるようになった<ref>[ |
2009年、Windows 7と同時にDirectX 11がリリースされた。DirectX 11のうち、[[GPGPU]]のために導入されたAPIである[[DirectCompute]]については、当初はDirectX 11(シェーダーモデル5.0)世代のハードウェアのみに対して提供される予定だったが、2008年11月に開催されたハードウェア技術者向け国際会議「WinHEC 2008」にて「DirectX 10世代のハードウェアでもサポートする」との発表があった。最終的に、DirectX 10.x(シェーダーモデル4.x)世代の[[Graphics Processing Unit|GPU]]でも、DirectX 11 APIを通してDirectComputeが利用できるようになった<ref>[https://news.mynavi.jp/article/20081127-stream/4 AMDのGPGPU戦略は新章へ - ATI Streamの展望、DirectX Compute Shaderの衝撃 (4) 今後のGPGPU動向は? | マイナビニュース]</ref><ref>[https://ascii.jp/elem/000/000/488/488266/index-2.html ASCII.jp:GPGPUをWindowsでサポートする「DirectCompute」 (2/2)|あなたの知らないWindows]</ref>。なおWindows Vista SP2およびWindows Server 2008 SP2向けのプラットフォーム更新プログラムKB971644には、DirectX 11のバックポートが含まれている。 |
||
DirectX 11.0のリリース後、Windows 8/8.1向けにそのマイナーアップデート版としてDirectX 11.1/11.2がリリースされた。Windows SDK 7.1およびDirectX SDK June 2010までは、Windows SDKとDirectX SDKとが別々に提供されてきたが、Windows SDK 8.0ではDirectX SDKと統合された。つまり、DirectX 11.1/11.2の開発環境は、Windows SDK 8.0/8.1に統合されることになった。Visual Studio 2012/2013には、それぞれWindows SDK 8.0/8.1がバンドルされている。なお、Windows SDK 8.0以降では後述するようにいくつかの[[DirectX#補助ライブラリ|補助ライブラリ]]が廃止されているものの、DirectX 9/10/11のコアライブラリは含まれているため、Windows XP/Vista/7向けのDirectXアプリケーションを開発することも可能である |
DirectX 11.0のリリース後、Windows 8/8.1向けにそのマイナーアップデート版としてDirectX 11.1/11.2がリリースされた。Windows SDK 7.1およびDirectX SDK June 2010までは、Windows SDKとDirectX SDKとが別々に提供されてきたが、Windows SDK 8.0ではDirectX SDKと統合された。つまり、DirectX 11.1/11.2の開発環境は、Windows SDK 8.0/8.1に統合されることになった。Visual Studio 2012/2013には、それぞれWindows SDK 8.0/8.1がバンドルされている。なお、Windows SDK 8.0以降では後述するようにいくつかの[[DirectX#補助ライブラリ|補助ライブラリ]]が廃止されているものの、DirectX 9/10/11のコアライブラリは含まれているため、Windows XP/Vista/7向けのDirectXアプリケーションを開発することも可能である{{efn|事前に<code>WINVER</code>および<code>_WIN32_WINNT</code>マクロを適切に定義することで、旧OS向けに新SDKで開発できる。}}。しかし、Windows SDK 8.0/8.1に同梱されているXAudio2 (v2.8) はWindows 8以降でしか利用できないため、旧OS上でも利用可能なXAudio2 (v2.7以前) を利用するアプリケーションを開発する場合は旧DirectX SDKが別途必要となる。 |
||
2013年3月に、Windows 7 SP1およびWindows Server 2008 R2 SP1向けのプラットフォーム更新プログラムKB2670838がリリースされた。この更新プログラムには、DirectX 11.1のバックポートも含まれている。なお、KB2670838の副作用として旧DirectX SDKに付属するグラフィックス分析ツールPIX for Windowsが動作しなくなる<ref>[https:// |
2013年3月に、Windows 7 SP1およびWindows Server 2008 R2 SP1向けのプラットフォーム更新プログラムKB2670838がリリースされた。この更新プログラムには、DirectX 11.1のバックポートも含まれている。なお、KB2670838の副作用として旧DirectX SDKに付属するグラフィックス分析ツールPIX for Windowsが動作しなくなる<ref>[https://walbourn.github.io/directx-11-1-and-windows-7-update/ DirectX 11.1 and Windows 7 Update | Games for Windows and the DirectX SDK blog]</ref>。DirectX 11.1がインストールされた環境では、代わりにVisual Studio 2012以降に統合されているGraphics Diagnosticsを使う必要があるが、Windows 7上では一部の機能が利用できない<ref>[https://msdn.microsoft.com/ja-jp/library/hh994801(v=vs.110).aspx 方法: アプリケーションのグラフィックス診断を無効にする]</ref>。 |
||
=== DirectX 12のリリース === |
=== DirectX 12のリリース === |
||
DirectX 11は2009年にリリースされてからDirectX 11.1/11.2のようなマイナーチェンジに終始し、メジャーアップデートとなるDirectX 12のロードマップは長らく示されていなかった。その間、OpenGLは組み込み向けの[[OpenGL ES]]とともに順調にバージョンアップを重ね、DirectX (Direct3D) に追いつくだけでなく一部ではDirectXを超える機能をサポートし始めていた<ref>[ |
DirectX 11は2009年にリリースされてからDirectX 11.1/11.2のようなマイナーチェンジに終始し、メジャーアップデートとなるDirectX 12のロードマップは長らく示されていなかった。その間、OpenGLは組み込み向けの[[OpenGL ES]]とともに順調にバージョンアップを重ね、DirectX (Direct3D) に追いつくだけでなく一部ではDirectXを超える機能をサポートし始めていた<ref>[https://www.4gamer.net/games/107/G010729/20100729091/ 4Gamer.net ― [SIGGRAPH]Khronos,OpenGL 4.1を発表。カンファレンスからその詳細を確認する]</ref><ref>[https://www.4gamer.net/games/107/G010729/20110821001/ 4Gamer.net ― [SIGGRAPH]ついにDirectX 11を凌駕した!? Khronosに聞く「OpenGL 4.2」の正体]</ref><ref>[https://www.4gamer.net/games/107/G010729/20121015050/ 4Gamer.net ― OpenGLはDirectX 11を超え,OpenGL ESは据え置き型ゲーム機と同等以上に。Khronosの最新動向レポート]</ref><ref>[https://www.4gamer.net/games/107/G010729/20130322107/ 4Gamer.net ― ValveはなぜSource EngineをLinux+OpenGL環境へ移植したのか。GTC 2013のValveセッションレポート]</ref>。また、[[アドバンスト・マイクロ・デバイセズ|AMD]]は従来のDirectXやOpenGLよりもハードウェアに近いローレベルな制御を可能とする独自APIとして2013年に[[Mantle (API)|Mantle]]を発表した<ref>[http://www.gamespark.jp/article/2013/12/30/45502.html 2013*年末企画『AMDの新グラフィックAPI“Mantle”その一連の動向に迫る』 | Game*Spark - 国内・海外ゲーム情報サイト]</ref><ref>[https://www.4gamer.net/games/234/G023477/20131114049/ AMD独自グラフィックスAPI「Mantle」の詳細が明らかに。理論上はGeForceのMantle対応も可能!? - 4Gamer.net]</ref>。 |
||
DirectXが最先端のリアルタイムグラフィックスシーンを牽引していた時代から変化を迎えつつあったが、[[Game Developers Conference|GDC]] 2014ではついにDirectX 12の発表が行なわれ<ref>[ |
DirectXが最先端のリアルタイムグラフィックスシーンを牽引していた時代から変化を迎えつつあったが、[[Game Developers Conference|GDC]] 2014ではついにDirectX 12の発表が行なわれ<ref>[https://www.4gamer.net/games/033/G003329/20140321013/ [GDC 2014]DirectX 12,ついに発表。その特徴に迫る - 4Gamer.net]</ref>、特にDirect3D 12に関してはDirect3D 11までの高レベルAPIを刷新し、オーバーヘッドを低減したゲームコンソールに近いローレベルな制御を可能とするグラフィックスAPIとなることが明らかにされた。 |
||
DirectX 12は[[Microsoft Windows 10|Windows 10]]専用としてそれに標準搭載される形で2015年7月に正式リリースされ、コマンドキューベースの効率的なマルチスレッドレンダリング機能や、マルチGPUによる分散レンダリングの標準化など、近代的なハードウェア設計に沿う形で革新的な多数の機能を備えるに至っている<ref>[http://www.geforce.com/hardware/technology/dx12/windows-10 Windows 10 | GeForce]</ref><ref>[ |
DirectX 12は[[Microsoft Windows 10|Windows 10]]専用としてそれに標準搭載される形で2015年7月に正式リリースされ、コマンドキューベースの効率的なマルチスレッドレンダリング機能や、マルチGPUによる分散レンダリングの標準化など、近代的なハードウェア設計に沿う形で革新的な多数の機能を備えるに至っている<ref>[http://www.geforce.com/hardware/technology/dx12/windows-10 Windows 10 | GeForce]</ref><ref>[https://www.4gamer.net/games/276/G027669/20150731044/ Windows 10環境におけるRadeonとAPUの優位性をAMDがアピール。DX12世代ではマルチGPUのトレンドが変わるか - 4Gamer.net]</ref>。 |
||
一方で、従来の手厚い高レベルレイヤーであるDirectX 11にも、DirectX 12で導入された新機能の一部が盛り込まれる形で、DirectX 11.3/11.4のようにDirectX 12と平行してアップデートが継続されている。 |
一方で、従来の手厚い高レベルレイヤーであるDirectX 11にも、DirectX 12で導入された新機能の一部が盛り込まれる形で、DirectX 11.3/11.4のようにDirectX 12と平行してアップデートが継続されている。 |
||
2018年にリリースされたWindows 10 October 2018 Updateでは、{{仮リンク|DirectX Raytracing|en|DirectX Raytracing}} (DXR) の機能が追加された。アップデートされたDirectX 12 APIを通じて、DXR対応ハードウェア上でリアルタイム[[レイトレーシング]]を実行できるようになった<ref>[https://devblogs.microsoft.com/directx/directx-raytracing-and-the-windows-10-october-2018-update/ DirectX Raytracing and the Windows 10 October 2018 Update - DirectX Developer Blog]</ref>。また、Windows 10バージョン1903では、DirectX 12をベースに実装された[[機械学習]]用のローレベルAPIとして、DirectMLが追加された<ref>[https://docs.microsoft.com/en-us/windows/ai/directml/dml Direct Machine Learning (DirectML) | Microsoft Docs]</ref><ref>[https://www.isus.jp/wp-content/uploads/pdf/758_win10-1903-update-for-ml-acceleration-on-integrated-graphics.pdf インテル® インテグレーテッド・グラフィックス上のマシンラーニングを高速化する Windows® 10 May 2019 Update]</ref>。 |
|||
⚫ | |||
⚫ | |||
[[ファイル:DirectX 12 Ultimate.png|サムネイル|140px|DirectX 12 Ultimateのロゴ]] |
[[ファイル:DirectX 12 Ultimate.png|サムネイル|140px|DirectX 12 Ultimateのロゴ]] |
||
マイクロソフトは2020年3月、「DirectX 12 Ultimate」を発表した<ref>{{Cite web |
マイクロソフトは2020年3月、「DirectX 12 Ultimate」を発表した<ref>{{Cite web|和書|url= https://forest.watch.impress.co.jp/docs/news/1242383.html|title= Microsoft、「DirectX 12 Ultimate」を発表 - 窓の杜|accessdate=2022-02-06}}</ref>。PCと[[Xbox Series X/S|Xbox Series X]]のグラフィックスプラットフォームを統一し、ゲームエコシステム全体の拡大を図ることを目的としている。[[Microsoft Windows 10のバージョン履歴#バージョン 2004|Windows 10バージョン2004]]以降で利用可能。 |
||
DirectX 12 Ultimateは以下の4つの技術から成る。下位互換性があるので、DirectX 12 Ultimateに対応しているハードウェアはDirectX 12を使用する既存のアプリケーションを実行することもできる。 |
|||
* DirectX Raytracing 1. |
* DirectX Raytracing 1.1 (DXR 1.1): リアルタイムレイトレーシングを実現するグラフィックスAPIの次期版。マイクロソフトとNVIDIAが共同開発。 |
||
* Variable Rate |
* Variable Rate Shading (VRS): シェーダーのピクセル解像度を状況に応じて変化させることで、見た目に影響を与えず描画を高速化。 |
||
* Mesh |
* Mesh Shaders: Turing世代のNVIDIA製GPUに追加されたシェーダー。 |
||
* Sampler |
* Sampler Feedback: 不要な計算を省いてレンダリング負荷を下げる技術の一つ。 |
||
== 補助ライブラリ == |
== 補助ライブラリ == |
||
DirectXのうち、Direct3Dにはマイクロソフト純正の補助ライブラリとして、{{仮リンク|D3DX|en|D3DX|date=2015年5月}} (Direct3D Extension) と呼ばれるDirect3D拡張ライブラリが存在する<ref>[https://msdn.microsoft.com/ja-jp/library/cc372290.aspx Direct3D エクステンション (D3DX) C/C++ リファレンス]</ref><ref>[https://msdn.microsoft.com/ja-jp/library/bb172638.aspx D3DX (Direct3D 9)]</ref>。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]]/[[C++]]用の関数・クラスや、COMインターフェイスとして実装されている。D3DXランタイムはDirect3D本体(コアコンポーネント)とは異なり、前述のようにWindows OSのセットアップやWindows Updateによるシステム更新ではインストールされず、またアプリケーションの開発に使用したDirectX SDKのバージョンによって必要となるDLLが異なるため、エンドユーザー環境でD3DXを使用するためにはDirectXエンドユーザーランタイムのインストールが必要となる。 |
DirectXのうち、Direct3Dにはマイクロソフト純正の補助ライブラリとして、{{仮リンク|D3DX|en|D3DX|date=2015年5月}} (Direct3D Extension) と呼ばれるDirect3D拡張ライブラリが存在する<ref>[https://msdn.microsoft.com/ja-jp/library/cc372290.aspx Direct3D エクステンション (D3DX) C/C++ リファレンス]</ref><ref>[https://msdn.microsoft.com/ja-jp/library/bb172638.aspx D3DX (Direct3D 9)]</ref>。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]]/[[C++]]用の関数・クラスや、COMインターフェイスとして実装されている。D3DXランタイムはDirect3D本体(コアコンポーネント)とは異なり、前述のようにWindows OSのセットアップやWindows Updateによるシステム更新ではインストールされず、またアプリケーションの開発に使用したDirectX SDKのバージョンによって必要となるDLLが異なるため、エンドユーザー環境でD3DXを使用するためにはDirectXエンドユーザーランタイムのインストールが必要となる<ref name="download_dx_rt_web"/>。エンドユーザーランタイムのインストーラー最終バージョンでは、過去のDirectX SDK(June 2010まで)に対応するランタイムがすべてインストールされる。 |
||
Windows SDKとDirectX SDKが統合されたWindows SDK 8.0では、D3DXは(D3DCSX11を除いて)廃止され、SDKに新しいバージョンが同梱されなくなっている<ref>[ |
Windows SDKとDirectX SDKが統合されたWindows SDK 8.0では、D3DXは(D3DCSX11を除いて)廃止され、SDKに新しいバージョンが同梱されなくなっている<ref>[https://walbourn.github.io/living-without-d3dx/ Living without D3DX | Games for Windows and the DirectX SDK blog]</ref>。廃止されたD3DXの代わりに、Windows SDK 8.0以降では算術ライブラリとしてDirectXMath<ref>[https://msdn.microsoft.com/en-us/library/windows/desktop/hh437833.aspx DirectXMath (Windows)]</ref><ref>[https://walbourn.github.io/introducing-directxmath/ Introducing DirectXMath | Games for Windows and the DirectX SDK blog]</ref>が標準提供されている。また、[https://github.com/Microsoft/DirectXTK DirectXTK][https://directxtk.codeplex.com/]、[https://github.com/Microsoft/DirectXTex DirectXTex][https://directxtex.codeplex.com/]、[https://github.com/Microsoft/DirectXMesh DirectXMesh][https://directxmesh.codeplex.com/] といったオープンソースのC++専用補助ライブラリが開発され、[[MITライセンス]]で[[GitHub]]にて公開されている(開発当初は[[Ms-PL]]ライセンスで[[CodePlex]]にて公開されていた)。なお[[Windows 8]]および[[Visual Studio]] 2012以降でも旧DirectX SDKをインストールするか、DirectXエンドユーザーランタイムをインストールすることでD3DXを利用することは可能だが、Windowsストアアプリ([[Windowsランタイム|WinRT]]アプリ、Modern UIアプリ)の開発ではD3DXを使用することはできず、D3DXを使用できるのはデスクトップアプリケーションのみとなっている。 |
||
そのほか、旧DirectX SDKにはDXUTと呼ばれるフレームワークがソースコードごと同梱されており、SDKに付属するマイクロソフト公式のサンプル実装に使われていたほか、[[NVIDIA]]・[[インテル]]・[[アドバンスト・マイクロ・デバイセズ|AMD]]といったハードウェアベンダーが独自に作成・公開するDirectXサンプルにもフレームワークとしてしばしば使われていたが、DXUTもWindows SDK 8.0以降には同梱されない。DXUT自体はDirectX 11.x用のもの (DXUT11) が[[GitHub]]にて公開・メンテナンスされている<ref>[https://github.com/Microsoft/DXUT Microsoft/DXUT · GitHub]</ref>。Effects 11 (FX11) と呼ばれるシェーダーエフェクトフレームワークも、DXUT同様にGitHubに移管されている<ref>[https://github.com/Microsoft/FX11 Microsoft/FX11 · GitHub]</ref>。また、Visual Studio 2012以降には、Direct3D/Direct2DベースのWinRTアプリケーションプロジェクトテンプレートが含まれている。 |
そのほか、旧DirectX SDKにはDXUTと呼ばれるフレームワークがソースコードごと同梱されており、SDKに付属するマイクロソフト公式のサンプル実装に使われていたほか、[[NVIDIA]]・[[インテル]]・[[アドバンスト・マイクロ・デバイセズ|AMD]]といったハードウェアベンダーが独自に作成・公開するDirectXサンプルにもフレームワークとしてしばしば使われていたが、DXUTもWindows SDK 8.0以降には同梱されない。DXUT自体はDirectX 11.x用のもの (DXUT11) が[[GitHub]]にて公開・メンテナンスされている<ref>[https://github.com/Microsoft/DXUT Microsoft/DXUT · GitHub]</ref>。Effects 11 (FX11) と呼ばれるシェーダーエフェクトフレームワークも、DXUT同様にGitHubに移管されている<ref>[https://github.com/Microsoft/FX11 Microsoft/FX11 · GitHub]</ref>。また、Visual Studio 2012以降には、Direct3D/Direct2DベースのWinRTアプリケーションプロジェクトテンプレートが含まれている。 |
||
旧DirectX SDKの最終バージョンJune 2010がサポートするVisual Studioはバージョン2008/2010のみ<ref>[https://www.microsoft.com/en-us/download/details.aspx?id=6812 Download DirectX |
旧DirectX SDKの最終バージョンJune 2010がサポートするVisual Studioはバージョン2008/2010のみ<ref>[https://www.microsoft.com/en-us/download/details.aspx?id=6812 Download DirectX SDK - (June 2010) from Official Microsoft Download Center]</ref>だが、旧SDKに付属していたサンプルのうち、多くはVisual Studio 2012以降向けに更新されたものがMSDN Code Galleryに移管されている<ref>[https://walbourn.github.io/directx-sdk-samples-catalog/ DirectX SDK Samples Catalog | Games for Windows and the DirectX SDK blog]</ref>。この更新によってD3DXなどの廃止されたライブラリへの依存も排除されている。MSDN Code Galleryの廃止に伴い、これらのサンプルはGitHubに移管された。 |
||
なお、''DirectX Graphics Samples''がMITライセンスでGitHubにて公開されており、DirectX 12のサンプルおよびユーティリティライブラリが含まれている。例として、Direct3D 12用のC++ヘッダーベース補助ライブラリである''D3D12 Helper Library'' (d3dx12.h)<ref>[https://docs.microsoft.com/en-us/windows/desktop/direct3d12/helper-structures-and-functions-for-d3d12 Helper Structures and Functions for D3D12 | Microsoft Docs]</ref><ref>[https://github.com/Microsoft/DirectX-Graphics-Samples/tree/master/Libraries/D3DX12 DirectX-Graphics-Samples/Libraries/D3DX12 at master · Microsoft/DirectX-Graphics-Samples]</ref>、DirectX 12 EngineのStarter Kitである''MiniEngine''<ref>[https://github.com/Microsoft/DirectX-Graphics-Samples/tree/master/MiniEngine DirectX-Graphics-Samples/MiniEngine at master · Microsoft/DirectX-Graphics-Samples]</ref>、Direct3D 12用メモリ管理ライブラリである''D3D12 Residency Starter Library''<ref>[https://docs.microsoft.com/en-us/windows/desktop/direct3d12/directx-12-programming-environment-set-up Direct3D 12 Programming Environment Setup | Microsoft Docs]</ref><ref>[http://twvideo01.ubm-us.net/o1/vault/gdc2018/presentations/Sawicki_Adam_Memory%20management%20in%20Vulkan.pdf Memory Management in Vulkan and DX12] P.33 AMD 2018年</ref><ref>[https://github.com/Microsoft/DirectX-Graphics-Samples/tree/master/Libraries/D3DX12Residency DirectX-Graphics-Samples/Libraries/D3DX12Residency at master · Microsoft/DirectX-Graphics-Samples]</ref>などが含まれている。 |
なお、''DirectX Graphics Samples''がMITライセンスでGitHubにて公開されており、DirectX 12のサンプルおよびユーティリティライブラリが含まれている。例として、Direct3D 12用のC++ヘッダーベース補助ライブラリである''D3D12 Helper Library'' (d3dx12.h)<ref>[https://docs.microsoft.com/en-us/windows/desktop/direct3d12/helper-structures-and-functions-for-d3d12 Helper Structures and Functions for D3D12 | Microsoft Docs]</ref><ref>[https://github.com/Microsoft/DirectX-Graphics-Samples/tree/master/Libraries/D3DX12 DirectX-Graphics-Samples/Libraries/D3DX12 at master · Microsoft/DirectX-Graphics-Samples]</ref>、DirectX 12 EngineのStarter Kitである''MiniEngine''<ref>[https://github.com/Microsoft/DirectX-Graphics-Samples/tree/master/MiniEngine DirectX-Graphics-Samples/MiniEngine at master · Microsoft/DirectX-Graphics-Samples]</ref>、Direct3D 12用メモリ管理ライブラリである''D3D12 Residency Starter Library''<ref>[https://docs.microsoft.com/en-us/windows/desktop/direct3d12/directx-12-programming-environment-set-up Direct3D 12 Programming Environment Setup | Microsoft Docs]</ref><ref>[http://twvideo01.ubm-us.net/o1/vault/gdc2018/presentations/Sawicki_Adam_Memory%20management%20in%20Vulkan.pdf Memory Management in Vulkan and DX12] P.33 AMD 2018年</ref><ref>[https://github.com/Microsoft/DirectX-Graphics-Samples/tree/master/Libraries/D3DX12Residency DirectX-Graphics-Samples/Libraries/D3DX12Residency at master · Microsoft/DirectX-Graphics-Samples]</ref>などが含まれている。 |
||
242行目: | 252行目: | ||
=== Managed DirectX (MDX) === |
=== Managed DirectX (MDX) === |
||
Managed DirectXは[[.NET Framework]]で動作する[[アプリケーションソフトウェア|アプリケーション]]からDirectXを呼び出すためのAPIである。Managed DirectXを使うと、.NET Framework上で動作するどんな言語からでもDirectXを呼び出すことができる。また、[[テクスチャ]]オブジェクトをSystem.Drawing.Bitmapオブジェクトから生成できるなど、.NET Frameworkとの相互運用も強化されている。なお、Managed DirectX 1.1のグラフィックスコンポーネントはDirect3D 9およびD3DX 9を内部で使用している。Managed DirectX 1.1の後継であるManaged DirectX 2.0の開発は中止され<ref>[ |
Managed DirectXは[[.NET Framework]]で動作する[[アプリケーションソフトウェア|アプリケーション]]からDirectXを呼び出すためのAPIである。Managed DirectXを使うと、.NET Framework上で動作するどんな言語からでもDirectXを呼び出すことができる。また、[[テクスチャ]]オブジェクトをSystem.Drawing.Bitmapオブジェクトから生成できるなど、.NET Frameworkとの相互運用も強化されている。なお、Managed DirectX 1.1のグラフィックスコンポーネントはDirect3D 9およびD3DX 9を内部で使用している。Managed DirectX 1.1の開発環境はDirectX SDKに、実行環境はDirectXエンドユーザーランタイムに同梱されている<ref name="download_dx_rt_web"/>。 |
||
Managed DirectX 1.1の後継であるManaged DirectX 2.0の開発は中止され<ref>[https://atmarkit.itmedia.co.jp/fdotnet/directxworld/directxworld03/directxworld03_02.html .NET開発者のためのDirectX連携手法 - @IT]</ref>、[[Microsoft XNA]] (XNA) に置き換えられることになった。 |
|||
=== Microsoft XNA === |
=== Microsoft XNA === |
||
{{Main|Microsoft XNA}} |
{{Main|Microsoft XNA}} |
||
XNAおよびXNA Game StudioはWindows、[[Xbox 360]]、[[Windows Phone]]、および[[Zune]]用のマルチプラットフォーム対応ゲーム開発環境・実行環境である。対応するアプリケーション開発言語は[[C Sharp|C#]] ([[Microsoft Visual C Sharp|Visual C#]]) のみであり、[[VB.NET]]やC++/CLIなどの他の.NET言語からは利用できない。グラフィックスコンポーネントの内部ではDirect3D 9が使用されている。 |
XNAおよびXNA Game StudioはWindows、[[Xbox 360]]、[[Windows Phone]]、および[[Zune]]用のマルチプラットフォーム対応ゲーム開発環境・実行環境である。対応するアプリケーション開発言語は[[C Sharp|C#]] ([[Microsoft Visual C Sharp|Visual C#]]) のみであり、[[VB.NET]]や[[C++/CLI]]などの他の.NET言語からは利用できない。グラフィックスコンポーネントの内部ではDirect3D 9が使用されている。2014年4月に開発・サポートを終了した<ref>[http://ggsoku.com/2013/02/microsoft-xna-end/ マイクロソフト、ゲーム開発環境「XNA」を2014年4月に終了 | GGSOKU - ガジェット速報]</ref>。 |
||
=== SlimDX === |
=== SlimDX === |
||
256行目: | 268行目: | ||
=== Windows API Code Pack for Microsoft .NET Framework === |
=== Windows API Code Pack for Microsoft .NET Framework === |
||
マイクロソフトによる公式のマネージコード用ライブラリ。Windows VistaやWindows 7の拡張的なUI機能等の対応<ref>[ |
マイクロソフトによる公式のマネージコード用ライブラリ。Windows VistaやWindows 7の拡張的なUI機能等の対応<ref>[https://atmarkit.itmedia.co.jp/fdotnet/dotnettips/917win7codepack/win7codepack.html Windows 7の新機能をC#やVBで利用するには? - @IT]</ref>が主な内容だが、DirectX 10以降のサポートも含まれている。2009年4月からアルファ版が公開されていたが、同年8月6日にバージョン1.0に移行した。Windows API Code Packでは、以下のDirectX APIがサポートされている。 |
||
* Direct3D 11.0 |
* Direct3D 11.0 |
||
* Direct3D 10.0/10.1 |
* Direct3D 10.0/10.1 |
||
264行目: | 276行目: | ||
そのほか、[[Windows Imaging Component]] (WIC) のサポートも含まれるが、DirectWriteとWICは部分的なサポートにとどまる。 |
そのほか、[[Windows Imaging Component]] (WIC) のサポートも含まれるが、DirectWriteとWICは部分的なサポートにとどまる。 |
||
Windows API Code Pack 1.1のリンクは2015年9月現在消失しており、ダウンロードできなくなっている<ref>[http://blogs.msdn.com/b/jpwin/archive/2011/10/04/windows-api-code-pack.aspx Windows API Code Pack の過去、現在、そして未来 - オペレーティングシステム開発統括部 - Site Home - MSDN Blogs]</ref>が、[[NuGet]]経由で1.0.0をダウンロードできる<ref>[https://www.nuget.org/packages/Windows7APICodePack/ NuGet Gallery | Windows 7 API Code Pack 1.0.0]</ref>。 |
Windows API Code Pack 1.1のリンクは2015年9月現在消失しており、ダウンロードできなくなっている<ref>[https://web.archive.org/web/20140501101617/http://blogs.msdn.com/b/jpwin/archive/2011/10/04/windows-api-code-pack.aspx Windows API Code Pack の過去、現在、そして未来 - オペレーティングシステム開発統括部 - Site Home - MSDN Blogs], [[Internet Archive]]</ref>が、[[NuGet]]経由で1.0.0をダウンロードできる<ref>[https://www.nuget.org/packages/Windows7APICodePack/ NuGet Gallery | Windows 7 API Code Pack 1.0.0]</ref>。 |
||
== OpenGLとの関係 == |
== OpenGLとの関係 == |
||
273行目: | 285行目: | ||
=== 用途 === |
=== 用途 === |
||
主な違いは、DirectXは基本的に3DグラフィックAPIのみに限定されるものではなく、サウンド処理やヒューマンデバイス入出力処理、ネットワーク処理までを内包する |
主な違いは、DirectXは基本的に3DグラフィックスAPIのみに限定されるものではなく、サウンド処理やヒューマンデバイス入出力処理、ネットワーク処理までを内包する総合的なマルチメディアアプリケーション(代表的なものはゲームなど)の開発用API/SDKを指向するものである<ref name="how_to_install_dx"/>一方、OpenGLは純然たる3DグラフィックスAPIとして設計されている点にある。またDirectXはWindowsや、Windows系OSを採用したDreamcastやXboxシリーズなどのゲーム機といった限られたプラットフォームでしかサポートされないのに対し、OpenGLはクロスプラットフォームであるという点である。 |
||
DirectXはその出自から、主にWindows用ゲームの分野で使用されてきたが、Direct3Dに関しては同環境における標準的な3DグラフィックAPIとしても用いられるようになり、ゲームに限らない一般的な3DアプリケーションやOSのグラフィカルシェル環境にまで用いられるようになった<ref>[ |
DirectXはその出自から、主にWindows用ゲームの分野で使用されてきたが、Direct3Dに関しては同環境における標準的な3DグラフィックスAPIとしても用いられるようになり、ゲームに限らない一般的な3DアプリケーションやOSのグラフィカルシェル環境にまで用いられるようになった<ref>[https://learn.microsoft.com/ja-jp/archive/msdn-magazine/2007/april/aero-glass-create-special-effects-with-the-desktop-window-manager Aero Glass: Create Special Effects With The Desktop Window Manager | Microsoft Learn]</ref>。また、Direct2D/DirectWriteは[[Internet Explorer|IE]]や[[Firefox]]といったWebブラウザーにおけるレンダリングエンジンのハードウェアアクセラレーターとして採用されている。 |
||
一方のOpenGLは、歴史的および機能的な理由から、[[3次元コンピュータグラフィックス|3DCG]]の製作工程 |
一方のOpenGLは、歴史的および機能的な理由から、[[3次元コンピュータグラフィックス|3DCG]]の製作工程{{efn|ただし、OpenGLはモデラーやシーンエディターなどによって対話的に行う作業環境のリアルタイムプレビュー表示に用いられるものであり、最終的なレンダリング出力にOpenGLそのものが用いられることはまずない。プロダクション品質の最終出力には[[RenderMan]]などのソフトウェアレンダラーが用いられ、[[グローバルイルミネーション]]のために必要となる膨大な照明計算を高速化する際のハードウェアアクセラレーションにも、NVIDIA IrayやRadeon ProRenderのように[[CUDA]]や[[OpenCL]]などが使われるため、クライアントや顧客が手にする製品としての映像はOpenGLによる出力ではない。}}や[[CAD]]、データ可視化などの用途に、グラフィックスワークステーションや[[ワークステーション#エンジニアリングワークステーション (EWS)|EWS]]等のプロフェッショナルな分野で使用されてきた。またパーソナルユーザー向けの3Dデスクトップ環境において標準的な描画APIとしても用いられており、これらの環境では3DビデオゲームのグラフィックスAPIとしても標準的な立場にある。このように、両者をその用途によって明確に区別することは困難となりつつある。 |
||
また、Direct3Dが標準的な3DグラフィックAPIとして定着したPC/Windows系の環境においてもOpenGLは今なお共存しており、実際にDirectXの登場以前から登場初期頃には、PC (Windows) 用ゲームの3DグラフィックAPIとしてOpenGLや、OpenGLを簡略化し3dfx社製グラフィックカードVoodooの専用APIとしたGlideがデファクトスタンダードとして用いられて |
また、Direct3Dが標準的な3DグラフィックスAPIとして定着したPC/Windows系の環境においてもOpenGLは今なお共存しており、実際にDirectXの登場以前から登場初期頃には、PC (Windows) 用ゲームの3DグラフィックスAPIとしてOpenGLや、OpenGLを簡略化し3dfx社製グラフィックスカードVoodooの専用APIとしたGlideがデファクトスタンダードとして用いられてきた歴史もあり、両者を比較する文脈においてよく言われるような単純な競合関係として説明することも、実態として困難と言える。Windows環境においては、3DCG製作ソフトにおける作業中のリアルタイムプレビュー表示に、Direct3DとOpenGLのうちどちらを使用するかをユーザーが選択できるものも存在する。[[AutoCAD]]<ref>[https://www.autodesk.co.jp/support/technical/article/caas/sfdcarticles/sfdcarticles/JPN/System-requirements-for-AutoCAD-2008.html AutoCAD 2008 の動作環境]</ref>や[[Vectorworks]]<ref>[https://bim.aanda.co.jp/blog/2022/01/9634/ Countdown 2022:新機能紹介 vol.3 – Vectorworks Design Blog]</ref>のように、かつてはWindows版においてもOpenGLを使用していたCADソフトウェアでも、比較的新しいバージョンではDirectX (Direct3D) を使用するようになっているものもある。 |
||
=== グラフィックスドライバー === |
=== グラフィックスドライバー === |
||
287行目: | 299行目: | ||
=== ANGLE === |
=== ANGLE === |
||
Googleの{{仮リンク|ANGLE (ソフトウェア)|en|ANGLE (software)|label=ANGLE}}<ref>[https:// |
Googleの{{仮リンク|ANGLE (ソフトウェア)|en|ANGLE (software)|label=ANGLE}}<ref>[https://chromium.googlesource.com/angle/angle angle/angle - Git at Google]</ref>プロジェクトのように、OpenGLそのものではなく、内部でDirect3Dを使用したラッパーを経由して、Windows上で[[WebGL]]や[[OpenGL ES]]を間接的に実現するライブラリも存在する。ANGLEはハードウェアベンダーのOpenGLドライバー(ICD)を経由せず、Direct3Dを利用してOpenGL ES APIを実現している<ref>[https://www.infoq.com/jp/news/2010/03/WebGL-ANGLE/ Windows上でANGLEを使って、WebGLレンダリング]</ref><ref>[https://atmarkit.itmedia.co.jp/ait/articles/1509/28/news010_4.html CEDEC 2015まとめ:ゲームバー、Cortana、Edge、HoloLens、Bridge、DirectX 12、ANGLE――Windows 10はゲーム開発者に何をもたらすのか (4/5) - @IT]</ref>。 |
||
=== GPGPU === |
=== GPGPU === |
||
294行目: | 306行目: | ||
== 脚注 == |
== 脚注 == |
||
{{脚注ヘルプ}} |
{{脚注ヘルプ}} |
||
=== 注釈 === |
|||
{{notelist}} |
|||
=== 出典 === |
|||
{{reflist|2}} |
{{reflist|2}} |
||
306行目: | 321行目: | ||
== 外部リンク == |
== 外部リンク == |
||
* [https://support.microsoft.com/ja-jp/ |
* [https://support.microsoft.com/ja-jp/topic/d1f5ffa5-dae2-246c-91b1-ee1e973ed8c2 最新版の DirectX をインストールする方法 - Microsoft サポート] |
||
⚫ | |||
{{マイクロソフト}} |
{{マイクロソフト}} |
||
{{Microsoft APIs}} |
{{Microsoft APIs}} |
||
{{Windows Components}} |
{{Windows Components}} |
||
{{Normdaten}} |
{{Normdaten}} |
||
⚫ | |||
{{DEFAULTSORT:MICROSOFT DIRECTX}} |
{{DEFAULTSORT:MICROSOFT DIRECTX}} |
2024年10月6日 (日) 22:25時点における最新版
Microsoft DirectX Microsoft Windows コンポーネント | |
---|---|
詳細 | |
標準提供 |
Windows 95 OSR2 Windows NT 4.0 SP3 以降のWindows |
Microsoft DirectX(ダイレクトエックス)は、マイクロソフトが開発したゲーム・マルチメディア処理用のAPIの集合である[1]。オーバーヘッドを少なくしたデバイスの仮想化・抽象化を提供する。Windows・Xbox・Xbox 360・Xbox Oneなど、マイクロソフト製のプラットフォームおよびデバイスにおいて広く利用されている。APIの一部はハードウェアアクセラレーションに対応しており、DirectX互換のハードウェアとデバイスドライバーが搭載されたコンピュータ上では、CPUの負担を低減しつつ高速処理することができる。グラフィックスに関しては、DirectX (Direct3D) 互換のGPU(ビデオカードやオンボードグラフィックスなど)を利用することにより、高品質の2次元・3次元コンピュータグラフィックスを高速にレンダリングできる。
DirectX Runtime
[編集]DirectXのランタイム (DLL) には大きく分けて2種あり、1つはd3d11.dllやd2d1.dllなどのような基本ランタイム、そしてもう1つはd3dx11_43.dll、D3DCompiler_43.dll、XAudio2_7.dllやxactengine3_7.dllといったSDK依存の追加ランタイムである。前者はWindowsオペレーティングシステム (OS) のセットアップ時(プリインストール)、もしくはMicrosoft Update/Windows Updateなどを通して最新のサービスパックや更新プログラムの適用時にシステムコンポーネントとして標準インストールされる一方で、後者はアプリケーションの開発に使用したDirectX SDK(Windows SDK)のバージョンに依存し、またMicrosoft Update/Windows Update経由でのインストールはできないため、DirectXアプリケーションの利用者がマイクロソフトの配布サイトからDirectXエンドユーザーランタイムのセットアッププログラム[2]をダウンロードして明示的にインストールする[3]か、もしくはDirectXアプリケーションの開発者がアプリケーションのセットアッププログラムに必須ランタイムのインストール機能を含める必要がある[4]。なお、Windows SDK 8.0付属のD3DCompiler_46.dllや、Windows SDK 8.1/10付属のD3DCompiler_47.dllなどは、OSによっては標準でインストールされておらず、また単独のエンドユーザー向けインストーラーも提供されていないため、開発者が対象環境に応じて明示的にアプリケーションに同梱しておく必要がある。.NET Framework 4.7はD3DCompiler_47.dllに依存しているが、インストーラーに含まれていないため、Windows 7などの旧環境では別途D3DCompiler更新プログラムを事前に適用しておく必要がある[5]。
Windows 8.x以降は前者の基本ランタイムに加えて後者の追加ランタイムのうち特定のバージョン(XInput1_4.dllやXAudio2_8.dllなど)が最初からシステムコンポーネントとしてプリインストールされており、Windows 8/RT向けストアアプリ、Windows 8.1/RT 8.1向けストアアプリおよびユニバーサルWindowsプラットフォーム (UWP) アプリの開発では基本ランタイムと、この特定のバージョンの追加ランタイムのみを使うことができる[6][7]。
DirectXを使用したアプリケーションプログラムを実行する際、「xxx.dllが見つからなかったため、このアプリケーションを開始できませんでした。……」といったエラーに対処するには、DirectXランタイムのアップデートが必要になる[2][8][9]。ただし、使用するOSによっては完全に実行不可能である場合もある。例えばWindows XPではDirectX 10以降を使用したアプリケーションは実行できない。また、Windows Vista/7/8.xではDirectX 12を利用することはできない。
コンポーネント群
[編集]DirectXの機能のうち、大部分はCOMインターフェイスの形で提供されている[10]。DirectXのランタイムライブラリとSDKは、いずれもマイクロソフトのウェブサイトから無償でダウンロードできるが、プロプライエタリでソースコードは非公開である。また、単独のDirectX SDKは「June 2010」が最終バージョンであり、Windows 8向けの開発キットであるWindows SDK 8.0がリリースされた際にWindows SDKへと統合された[11]。PIX for WindowsなどのツールやD3DXライブラリはSDK統合の際に廃止され、代替としてGraphics DiagnosticsがMicrosoft Visual Studioに用意されたり、DirectX Tool Kitなどのオープンソースライブラリが開発・公開されたりしている(#補助ライブラリ)。
- DirectX Graphics: DirectX 8からの名称。
- Direct3D (D3D) : 3次元グラフィックス。DirectXの進化の歴史においてもっとも重要なコンポーネントとなっており、DirectXといえば間接的にDirect3Dを指していることがある。
- DirectCompute: Windows 7以降で利用可能な、GPGPU用API。実際にはDirect3D 11/12の一部である。DirectX 11をサポートするためのプラットフォーム更新プログラムとしてWindows Vistaにもバックポートされた。
- DirectML (Direct Machine Learning) : Direct3D 12上に構築された、機械学習向けのローレベルなアクセラレーションライブラリ[12]。Windows 10 1903以降で利用可能。
- DirectX Graphics Infrastructure (DXGI) : Direct3D 10以降のグラフィックス基盤API。デバイスとの通信など、ローレベルタスクを担当する。
- Direct2D (D2D) : Windows 7以降で利用可能な、新しい2次元グラフィックスAPI。バージョン1.0はWindows Vistaにもバックポートされた。
- DirectWrite: Windows 7以降で利用可能な、新しい高品位テキスト描画API。バージョン1.0はWindows Vistaにもバックポートされた。
- DirectDraw: 2次元グラフィックス(DirectX 7まで存在したが、DirectX 8以降はDirect3Dに吸収された)。
- DirectComposition: Windows 8以降で利用可能な、変形やアニメーションなどを伴う高性能なビットマップ合成を可能にするAPI[13]。DWM機能の一部をアプリケーション側に解放し、シームレスな連携を可能にする[14]。
- Direct3D (D3D) : 3次元グラフィックス。DirectXの進化の歴史においてもっとも重要なコンポーネントとなっており、DirectXといえば間接的にDirect3Dを指していることがある。
- DirectX Audio: DirectX 8からの名称。
- XAudio2: XboxのサウンドAPIであるXAudioから発展したもの。DirectSoundの後継。
- X3DAudio: XAudio2と組み合わせて使用される、空間音響ライブラリ。
- XACT: オーサリングツールを含む高レベルオーディオエンジン。更新終了。
- DirectSound: サウンド再生および録音。更新終了。
- DirectSound3D (DS3D) : 3次元サウンド再生。
- DirectMusic: DirectMusic Producerで作成された音楽トラックの再生。更新終了。
- XAudio2: XboxのサウンドAPIであるXAudioから発展したもの。DirectSoundの後継。
- XInput: Xbox 360およびXbox One専用ゲームコントローラーに対応するAPI。Windows上でもこれらのデバイスをコンソール同等に利用することが可能になる。
- DirectInput: キーボード、マウス、ゲームパッド、ジョイスティックからの入力処理、およびフォースフィードバックを扱う。DirectX 8以降更新終了。FPSゲーム開発のような用途であっても、キーボードやマウスはWM_INPUT (Raw Input) やWM_MOUSEMOVEなどを代わりに利用することが推奨されている[15][16]。
- DirectX Video Acceleration (DXVA) : 動画処理API。バージョン1.0はDirectShowの一部だったが、Windows Vistaから利用可能なバージョン2.0はDirectShowやMedia Foundationからは独立している。
- DirectShow: 各種音声・動画の再生・作成。後継としてMedia Foundationが存在する。
- DirectAnimation: 2D/3D Webアニメーション用[17][18]。Internet Explorer 4.0以降に統合されていた。
- DirectX Media Objects[19]: エンコーダー、デコーダー、エフェクトといったストリーミングオブジェクトのサポート。
- DirectPlay: ネットワーク通信。DirectX 8以降更新終了。
- DirectSetup: DirectXランタイムのセットアップ用であり、正確にはAPIではない。
- DirectStorage: 最新のNVMeストレージデバイスに最適化された、低オーバーヘッドのI/Oを提供するAPI[20]。DirectStorage 1.1では、Direct3D 12上に構築された、圧縮データをGPUで展開する機能もサポートする[21][22]。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ビット版が用意されていないものも存在する[23]。
リリース履歴
[編集]DirectX 12およびDirectX 11.3はWindows 10 (Windows 10 for Desktop, Windows 10 for Xbox One, Windows 10 for Phone) 専用のバージョンである。PC用Windows 10のほか、Xbox One用Windows 10にも対応する[24]。DirectX 12はWindows Phone (Windows 10 Mobile/Windows 10 IoT) にも対応することが報じられている[25]が、DirectX 12/WDDM 2.0に対応するデバイスドライバーおよび機能レベル11_0以上に対応するハードウェアが必須となる。
DirectX 11.2はWindows 8.1以降/Xbox One専用のバージョンである[26]。
Windows 7(一部DirectX 11.1に対応)/Windows VistaにおいてはDirectX 11.0、Windows XP・2000/Me/98/98SEはDirectX 9(9.0c)、Windows 95はDirectX 8(8.0a)が最新バージョンとなる。ただしPC-9800シリーズの場合はDirectX 7(7.0a)が最新バージョンであり、それ以上のバージョンは制限を解除しないとインストールできないようになっている[27]。またWindows NT 4.0ではSP3以降に付随するDirectX 3相当機能が最新バージョンとなる。
一部のバージョンに関しては、Windows UpdateやWindowsストアを通じて、OSが対応する最新のDirectXをサービスパックなどの機能更新プログラムとともに入手することが可能である。例えばWindows XPの場合、Windows Update経由でSP2と同時にDirectX 9.0cを入手できる。Windows Vistaの場合、SP1と同時にDirectX 10.1を、またSP2+Platform Updateと同時にDirectX 11を入手できる[3]。なお、DirectX 10以降は、Windows Display Driver Modelの導入を始めとして、Windowsのグラフィックスアーキテクチャに大規模な修正が加えられたことから、Windows XPなどの旧Windows製品では利用できない。新しいOSでは、対応する最新バージョンよりも古いバージョンのDirectXに関しても基本的にすべて利用可能である。
バージョン | 概要 | 日付 |
---|---|---|
WinG、Display Control Interface | Windows 3.1時代。 | |
DirectX 1.0 | ゲーム開発用のAPI集Game SDKとして発表された。DirectDraw、DirectSound、DirectPlayが含まれていた[28]。 | 1995年9月30日 |
DirectX 2.0 | Direct3D (Immediate Mode, Retained Mode) の登場。 | 1996年6月 |
DirectX 3.0[29] | 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日[30] |
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日 |
DirectX 10.0 | Windows Vista以降でのみ利用可能。DXGIやジオメトリシェーダーが導入された。 | 2006年 |
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としてバックポートされた[31]。 | 2012年 |
DirectX 11.2 | Windows 8.1以降とXbox Oneでのみ利用可能[26]。 | 2013年 |
DirectX 11.3 | Windows 10以降でのみ利用可能。DirectX 12に搭載される新機能の一部は、同時期に提供される従来からの高レベルAPIのマイナーチェンジとなるDirectX 11.3にも搭載される[32][33][34]。 | 2015年 |
DirectX 12 | Windows 10以降でのみ利用可能。高レベルだがオーバーヘッドの大きかったDirect3D 11までと比べて、Direct3D 12はよりハードウェアに近いローレベルな制御を可能とするAPIとなった[35]。 | 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をスキップすることにした[36]。
歴史
[編集]1994年終盤、マイクロソフトはWindows 95をリリースしようとしていたが、当時のプログラマは、Windows 95よりもむしろMS-DOSの方がゲームプログラミングに適していると考える傾向にあった[37][38]。「どのようなプログラムを作れるか」というのはOSの評価基準として大きなウェイトを占める。マイクロソフトの三人の社員、クレイグ・アイスラー (Craig Eisler)、アレックス・ジョン (Alex St. John)、エリック・イングシュトローム (Eric Engstrom) は、この傾向を危惧していた。
MS-DOSの環境下では、プログラムはビデオカード、キーボード、マウス、サウンドカードなど様々なシステムパーツに直接アクセスできていたが、Windows 95ではメモリ保護のためにこれらの直接のアクセスが制限されてしまっていた。あと数か月でWindows 95がリリースされるという中で、マイクロソフトはWindows 95におけるプログラムの自由度を上げる仕組みを作り上げなければならなかった。アイスラーとジョンとイングシュトロームの三人はこれらの問題解決に乗り出した。こうして作られたのがDirectXである。
DirectXの開発プロジェクトには「The Manhattan Project」というコードネームが付けられた。後年のShacknewsによるアレックス・ジョンへのインタビューによると、これは第二次世界大戦における原子爆弾の開発プロジェクト「マンハッタン計画」をなぞったもので、日本製のゲームコンソール[注釈 1]をPCで(究極的にはXboxで)押しのけるための取り組みであったからだという[38]。またプロトタイプのDirectXのロゴには、放射能標識に似たものが用いられていたが、マイクロソフトの広報によって差し止められ、「X」の形状にするために脚を1本加えたロゴ[39]に変更された[注釈 2]。なお、その後もバージョン6までのDirectXには大量破壊兵器にちなんだと推測される開発コードネームが付けられていた[41]。
DirectXの開発メンバーたちは、社内で「Beastie Boys」(野蛮な若者)と呼ばれ、クビの圧力にさらされながら開発を進めた。マイクロソフトの経営陣は当初、Windowsをゲームプラットフォームにする気がなかったため、彼らの活動を評価していなかった[42]。
1995年8月(日本では同年11月)にWindows 95がリリースされた後、DirectXの最初のバージョンは「Windows 95 Game SDK」として1995年9月にリリースされた。これはWindows 3.1にあったWinG APIとDCI (Display Control Interface) を32ビット用に移植したものである。このとき、マイクロソフトはATIの開発チームからゲームグラフィックの基本部分についての技術提供を受けた。これ以降、アイスラー(開発リーダー)、ジョン、イングシュトローム(プログラム責任者)の三人のチームを中心としてDirectXの開発が進められ、最終的にはこれ以降のすべてのWindowsにおいてDirectXがマルチメディア機能を担うことになった。DirectX 1から5までの開発でのドタバタは、アイスラーのブログに詳しく書かれている[28]。
DirectXの登場より前に、マイクロソフトはOpenGLをWindows NTに搭載してしまっていた[43][44]。OpenGLは、動作に(当時においては)ハイスペックな環境が必要だった上に、用途もCADやエンジニアリングに限られていた。そんな中Direct3Dは、ゲーム用としてはオーバースペック気味だったOpenGLの軽量版として設計され、ここからDirect3DとOpenGLとの、ユーザー同士の対立が始まった。Windows専用だったDirect3Dはマイクロソフトの3E戦略(embrace, extend, extinguish―吸収、拡大、根絶)だとOpenGLユーザーから非難されることとなった。しかしDirectXには、サウンドやジョイスティックなど、OpenGLがカバーできない機能が含まれていたため、DirectX上の他のAPIとOpenGLとを組み合わせて使われることが多かった。後にはOpenGLとSDLの組み合わせも多い。OpenGLはDirect3Dが先行して実装したジオメトリシェーダーやコンピュートシェーダーといった機能を数年遅れで取り入れるなど、Direct3Dの影響を受けている部分がある[45][46]。
PCだけでなくコンシューマーやアーケードのゲーム機でも、OSとしてWindowsを採用し、ゲーム開発用APIとしてDirectXが利用されるケースも出始めた。1998年(北米では1999年)に登場したセガのドリームキャストでは、Windows CEとともにDirectX 5.0のカスタマイズ版が世界で初めて用いられた[47][48]。その後、WindowsとDirectXは2001年(日本では2002年)に登場したマイクロソフトの初代Xboxでも採用された。OSはWindows 2000を軽量化したカスタマイズ版だが、HDDではなく各ゲームのDVD-ROMから読み込んでブートする形式だった[49][注釈 3]。XboxのコンソールAPIはマイクロソフトとNVIDIA(Xboxのカスタムグラフィックスチップの開発元)で共同開発された。Xbox APIはDirectX 8.1に近いが、コンソール上からアップデートができないところがPCや他のコンソールと異なる。XboxのコードネームはDirectXboxだったが、商品名は短縮してXboxとなった[50]。
2001年にリリースされたWindows XPには、DirectX 8.1が標準搭載された。
DirectX 9のリリース
[編集]2002年にマイクロソフトは、以前よりもはるかに長いシェーダープログラムを扱えるシェーダーモデル2.0(頂点シェーダー2.0、ピクセルシェーダー2.0)と高級シェーディング言語HLSLをサポートしたDirectX 9をリリースした。2004年8月にはさらに機能を強化したシェーダーモデル3.0を導入したDirectX 9.0cをリリースし、それ以降もD3DXやXAudio2といった拡張ライブラリやOS非標準コンポーネントを中心にDirectX SDKおよびエンドユーザーランタイム一式の更新が続けられた。
DirectX SDK February 2005を最後に、DirectShowはDirectX SDKから取り除かれ、代わりにMicrosoft Platform SDKへ移動された(DirectX SDK April 2005以降にはDirectShow関連ファイルが含まれない)。しかしPlatform SDKに付属するDirectShowのサンプルをビルドするためにはDirectX SDKが必要である[51]。
2005年に登場したXbox 360には、Windows 2000のカスタム版が搭載された。GPU (Xenos) はATI製で、機能的にはDirectX 9.0c世代だが、DirectX 10世代GPUの特徴である統合型シェーダーアーキテクチャを先行して採用していた[52]。
DirectX 10のリリース
[編集]2006年にリリースされたDirectX 10は、WDDM/DWM/DXGI 1.0とともにWindows Vista専用として提供され、Windows XP以前のOSにはバックポートされなかった。
なお、Windows Vista以降には、Direct3D 10とともに、WDDMに対応したDirect3D 9の改良版としてDirect3D 9Exも搭載されている。Windows VistaのWindows AeroはDirect3D 10ではなく9Exで描画されており、グラフィックスハードウェアがDirect3D 10(シェーダーモデル4.0)に対応していなくとも、Direct3D 9(シェーダーモデル2.0/3.0)世代のハードウェアとWDDM 1.0に対応したデバイスドライバーがあればAeroが利用可能となっている。Direct3D 9ExはのちにWindows 7でフリップモードが追加されている[53]。
DirectX SDK August 2007を最後に、DirectMusicはDirectX SDKから取り除かれた[54]。
2008年にはWindows Vista SP1と同時に、DirectX 10のマイナーバージョンアップとしてDirectX 10.1がリリースされた[55]。
DirectX 11のリリース
[編集]2009年、Windows 7と同時にDirectX 11がリリースされた。DirectX 11のうち、GPGPUのために導入されたAPIであるDirectComputeについては、当初はDirectX 11(シェーダーモデル5.0)世代のハードウェアのみに対して提供される予定だったが、2008年11月に開催されたハードウェア技術者向け国際会議「WinHEC 2008」にて「DirectX 10世代のハードウェアでもサポートする」との発表があった。最終的に、DirectX 10.x(シェーダーモデル4.x)世代のGPUでも、DirectX 11 APIを通してDirectComputeが利用できるようになった[56][57]。なおWindows Vista SP2およびWindows Server 2008 SP2向けのプラットフォーム更新プログラムKB971644には、DirectX 11のバックポートが含まれている。
DirectX 11.0のリリース後、Windows 8/8.1向けにそのマイナーアップデート版としてDirectX 11.1/11.2がリリースされた。Windows SDK 7.1およびDirectX SDK June 2010までは、Windows SDKとDirectX SDKとが別々に提供されてきたが、Windows SDK 8.0ではDirectX SDKと統合された。つまり、DirectX 11.1/11.2の開発環境は、Windows SDK 8.0/8.1に統合されることになった。Visual Studio 2012/2013には、それぞれWindows SDK 8.0/8.1がバンドルされている。なお、Windows SDK 8.0以降では後述するようにいくつかの補助ライブラリが廃止されているものの、DirectX 9/10/11のコアライブラリは含まれているため、Windows XP/Vista/7向けのDirectXアプリケーションを開発することも可能である[注釈 4]。しかし、Windows SDK 8.0/8.1に同梱されているXAudio2 (v2.8) はWindows 8以降でしか利用できないため、旧OS上でも利用可能なXAudio2 (v2.7以前) を利用するアプリケーションを開発する場合は旧DirectX SDKが別途必要となる。
2013年3月に、Windows 7 SP1およびWindows Server 2008 R2 SP1向けのプラットフォーム更新プログラムKB2670838がリリースされた。この更新プログラムには、DirectX 11.1のバックポートも含まれている。なお、KB2670838の副作用として旧DirectX SDKに付属するグラフィックス分析ツールPIX for Windowsが動作しなくなる[58]。DirectX 11.1がインストールされた環境では、代わりにVisual Studio 2012以降に統合されているGraphics Diagnosticsを使う必要があるが、Windows 7上では一部の機能が利用できない[59]。
DirectX 12のリリース
[編集]DirectX 11は2009年にリリースされてからDirectX 11.1/11.2のようなマイナーチェンジに終始し、メジャーアップデートとなるDirectX 12のロードマップは長らく示されていなかった。その間、OpenGLは組み込み向けのOpenGL ESとともに順調にバージョンアップを重ね、DirectX (Direct3D) に追いつくだけでなく一部ではDirectXを超える機能をサポートし始めていた[60][61][62][63]。また、AMDは従来のDirectXやOpenGLよりもハードウェアに近いローレベルな制御を可能とする独自APIとして2013年にMantleを発表した[64][65]。
DirectXが最先端のリアルタイムグラフィックスシーンを牽引していた時代から変化を迎えつつあったが、GDC 2014ではついにDirectX 12の発表が行なわれ[66]、特にDirect3D 12に関してはDirect3D 11までの高レベルAPIを刷新し、オーバーヘッドを低減したゲームコンソールに近いローレベルな制御を可能とするグラフィックスAPIとなることが明らかにされた。
DirectX 12はWindows 10専用としてそれに標準搭載される形で2015年7月に正式リリースされ、コマンドキューベースの効率的なマルチスレッドレンダリング機能や、マルチGPUによる分散レンダリングの標準化など、近代的なハードウェア設計に沿う形で革新的な多数の機能を備えるに至っている[67][68]。
一方で、従来の手厚い高レベルレイヤーであるDirectX 11にも、DirectX 12で導入された新機能の一部が盛り込まれる形で、DirectX 11.3/11.4のようにDirectX 12と平行してアップデートが継続されている。
2018年にリリースされたWindows 10 October 2018 Updateでは、DirectX Raytracing (DXR) の機能が追加された。アップデートされたDirectX 12 APIを通じて、DXR対応ハードウェア上でリアルタイムレイトレーシングを実行できるようになった[69]。また、Windows 10バージョン1903では、DirectX 12をベースに実装された機械学習用のローレベルAPIとして、DirectMLが追加された[70][71]。
DirectX 12 Ultimateのリリース
[編集]マイクロソフトは2020年3月、「DirectX 12 Ultimate」を発表した[72]。PCとXbox Series Xのグラフィックスプラットフォームを統一し、ゲームエコシステム全体の拡大を図ることを目的としている。Windows 10バージョン2004以降で利用可能。
DirectX 12 Ultimateは以下の4つの技術から成る。下位互換性があるので、DirectX 12 Ultimateに対応しているハードウェアはDirectX 12を使用する既存のアプリケーションを実行することもできる。
- DirectX Raytracing 1.1 (DXR 1.1): リアルタイムレイトレーシングを実現するグラフィックスAPIの次期版。マイクロソフトとNVIDIAが共同開発。
- Variable Rate Shading (VRS): シェーダーのピクセル解像度を状況に応じて変化させることで、見た目に影響を与えず描画を高速化。
- Mesh Shaders: Turing世代のNVIDIA製GPUに追加されたシェーダー。
- Sampler Feedback: 不要な計算を省いてレンダリング負荷を下げる技術の一つ。
補助ライブラリ
[編集]DirectXのうち、Direct3Dにはマイクロソフト純正の補助ライブラリとして、D3DX (Direct3D Extension) と呼ばれるDirect3D拡張ライブラリが存在する[73][74]。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エンドユーザーランタイムのインストールが必要となる[2]。エンドユーザーランタイムのインストーラー最終バージョンでは、過去のDirectX SDK(June 2010まで)に対応するランタイムがすべてインストールされる。
Windows SDKとDirectX SDKが統合されたWindows SDK 8.0では、D3DXは(D3DCSX11を除いて)廃止され、SDKに新しいバージョンが同梱されなくなっている[75]。廃止されたD3DXの代わりに、Windows SDK 8.0以降では算術ライブラリとしてDirectXMath[76][77]が標準提供されている。また、DirectXTK[1]、DirectXTex[2]、DirectXMesh[3] といったオープンソースのC++専用補助ライブラリが開発され、MITライセンスでGitHubにて公開されている(開発当初はMs-PLライセンスでCodePlexにて公開されていた)。なおWindows 8およびVisual Studio 2012以降でも旧DirectX SDKをインストールするか、DirectXエンドユーザーランタイムをインストールすることでD3DXを利用することは可能だが、Windowsストアアプリ(WinRTアプリ、Modern UIアプリ)の開発ではD3DXを使用することはできず、D3DXを使用できるのはデスクトップアプリケーションのみとなっている。
そのほか、旧DirectX SDKにはDXUTと呼ばれるフレームワークがソースコードごと同梱されており、SDKに付属するマイクロソフト公式のサンプル実装に使われていたほか、NVIDIA・インテル・AMDといったハードウェアベンダーが独自に作成・公開するDirectXサンプルにもフレームワークとしてしばしば使われていたが、DXUTもWindows SDK 8.0以降には同梱されない。DXUT自体はDirectX 11.x用のもの (DXUT11) がGitHubにて公開・メンテナンスされている[78]。Effects 11 (FX11) と呼ばれるシェーダーエフェクトフレームワークも、DXUT同様にGitHubに移管されている[79]。また、Visual Studio 2012以降には、Direct3D/Direct2DベースのWinRTアプリケーションプロジェクトテンプレートが含まれている。
旧DirectX SDKの最終バージョンJune 2010がサポートするVisual Studioはバージョン2008/2010のみ[80]だが、旧SDKに付属していたサンプルのうち、多くはVisual Studio 2012以降向けに更新されたものがMSDN Code Galleryに移管されている[81]。この更新によってD3DXなどの廃止されたライブラリへの依存も排除されている。MSDN Code Galleryの廃止に伴い、これらのサンプルはGitHubに移管された。
なお、DirectX Graphics SamplesがMITライセンスでGitHubにて公開されており、DirectX 12のサンプルおよびユーティリティライブラリが含まれている。例として、Direct3D 12用のC++ヘッダーベース補助ライブラリであるD3D12 Helper Library (d3dx12.h)[82][83]、DirectX 12 EngineのStarter KitであるMiniEngine[84]、Direct3D 12用メモリ管理ライブラリであるD3D12 Residency Starter Library[85][86][87]などが含まれている。
.NET Framework用ラッパー
[編集]かつてDirectX 7.0およびDirectX 8.0でC++向け以外にVisual Basic用のインターフェイスが提供されたものの、基本的にDirectXはC++言語専用のAPIである。ここでは.NET Framework言語環境向けにラップされたマネージコードライブラリを紹介する。
Managed DirectX (MDX)
[編集]Managed DirectXは.NET Frameworkで動作するアプリケーションからDirectXを呼び出すためのAPIである。Managed DirectXを使うと、.NET Framework上で動作するどんな言語からでもDirectXを呼び出すことができる。また、テクスチャオブジェクトをSystem.Drawing.Bitmapオブジェクトから生成できるなど、.NET Frameworkとの相互運用も強化されている。なお、Managed DirectX 1.1のグラフィックスコンポーネントはDirect3D 9およびD3DX 9を内部で使用している。Managed DirectX 1.1の開発環境はDirectX SDKに、実行環境はDirectXエンドユーザーランタイムに同梱されている[2]。
Managed DirectX 1.1の後継であるManaged DirectX 2.0の開発は中止され[88]、Microsoft XNA (XNA) に置き換えられることになった。
Microsoft XNA
[編集]XNAおよびXNA Game StudioはWindows、Xbox 360、Windows Phone、およびZune用のマルチプラットフォーム対応ゲーム開発環境・実行環境である。対応するアプリケーション開発言語はC# (Visual C#) のみであり、VB.NETやC++/CLIなどの他の.NET言語からは利用できない。グラフィックスコンポーネントの内部ではDirect3D 9が使用されている。2014年4月に開発・サポートを終了した[89]。
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
[編集]SharpDXはDirectX Graphics、DirectX Audio、DirectX Inputなどのマネージラッパーを提供するオープンソースのプロジェクトである[90]。ライセンス形態はMITライセンスとなる。SharpDXは従来のデスクトップアプリのほか、Windowsストアアプリからも利用できる。バージョン2.6.3時点でDirectX 9、DirectX 10、DirectX 11をサポートする[91]。Windows 10と同時に正式リリースされたDirectX 12 (Direct3D 12) も、バージョン3.0にて対応したが、DirectX 10 (Direct3D 10) など一部のレガシーAPIのサポートが終了している[92]。2019年5月をもって、開発を終了することがアナウンスされた[93]。
Windows API Code Pack for Microsoft .NET Framework
[編集]マイクロソフトによる公式のマネージコード用ライブラリ。Windows VistaやWindows 7の拡張的なUI機能等の対応[94]が主な内容だが、DirectX 10以降のサポートも含まれている。2009年4月からアルファ版が公開されていたが、同年8月6日にバージョン1.0に移行した。Windows API Code Packでは、以下のDirectX APIがサポートされている。
- Direct3D 11.0
- Direct3D 10.0/10.1
- DXGI 1.0/1.1
- Direct2D 1.0
- DirectWrite
そのほか、Windows Imaging Component (WIC) のサポートも含まれるが、DirectWriteとWICは部分的なサポートにとどまる。
Windows API Code Pack 1.1のリンクは2015年9月現在消失しており、ダウンロードできなくなっている[95]が、NuGet経由で1.0.0をダウンロードできる[96]。
OpenGLとの関係
[編集]この節には独自研究が含まれているおそれがあります。 |
DirectXのうちDirectX Graphics (Direct3D) は、同じくリアルタイム3次元コンピュータグラフィックス (3DCG) を扱うためのAPI集合であるOpenGLとしばしば比較される。
用途
[編集]主な違いは、DirectXは基本的に3DグラフィックスAPIのみに限定されるものではなく、サウンド処理やヒューマンデバイス入出力処理、ネットワーク処理までを内包する総合的なマルチメディアアプリケーション(代表的なものはゲームなど)の開発用API/SDKを指向するものである[3]一方、OpenGLは純然たる3DグラフィックスAPIとして設計されている点にある。またDirectXはWindowsや、Windows系OSを採用したDreamcastやXboxシリーズなどのゲーム機といった限られたプラットフォームでしかサポートされないのに対し、OpenGLはクロスプラットフォームであるという点である。
DirectXはその出自から、主にWindows用ゲームの分野で使用されてきたが、Direct3Dに関しては同環境における標準的な3DグラフィックスAPIとしても用いられるようになり、ゲームに限らない一般的な3DアプリケーションやOSのグラフィカルシェル環境にまで用いられるようになった[97]。また、Direct2D/DirectWriteはIEやFirefoxといったWebブラウザーにおけるレンダリングエンジンのハードウェアアクセラレーターとして採用されている。
一方のOpenGLは、歴史的および機能的な理由から、3DCGの製作工程[注釈 5]やCAD、データ可視化などの用途に、グラフィックスワークステーションやEWS等のプロフェッショナルな分野で使用されてきた。またパーソナルユーザー向けの3Dデスクトップ環境において標準的な描画APIとしても用いられており、これらの環境では3DビデオゲームのグラフィックスAPIとしても標準的な立場にある。このように、両者をその用途によって明確に区別することは困難となりつつある。
また、Direct3Dが標準的な3DグラフィックスAPIとして定着したPC/Windows系の環境においてもOpenGLは今なお共存しており、実際にDirectXの登場以前から登場初期頃には、PC (Windows) 用ゲームの3DグラフィックスAPIとしてOpenGLや、OpenGLを簡略化し3dfx社製グラフィックスカードVoodooの専用APIとしたGlideがデファクトスタンダードとして用いられてきた歴史もあり、両者を比較する文脈においてよく言われるような単純な競合関係として説明することも、実態として困難と言える。Windows環境においては、3DCG製作ソフトにおける作業中のリアルタイムプレビュー表示に、Direct3DとOpenGLのうちどちらを使用するかをユーザーが選択できるものも存在する。AutoCAD[98]やVectorworks[99]のように、かつてはWindows版においてもOpenGLを使用していたCADソフトウェアでも、比較的新しいバージョンではDirectX (Direct3D) を使用するようになっているものもある。
グラフィックスドライバー
[編集]WindowsがOS標準機能でサポートするOpenGLバージョンは1.1まで[100]であり、グラフィックスハードウェア (GPU) ベンダーが提供しているOpenGL対応ドライバー (Installable Client Driver, ICD) をインストールするまで、(たとえハードウェアがOpenGL 1.2以降をサポートしていても)OpenGL 1.2以降の機能を使用することはできない。また、OpenGL 1.2以降で追加された関数を使用するには、ICDがインストールされた状態で、wglGetProcAddress()
関数を使用してエントリポイント(関数ポインタ)を取得する必要がある[101]。ICDがインストールされていない状態では、ソフトウェアやDirect3DラッパーによるOpenGL 1.1実装が使用される[102]。
Windows Vistaには最初からグラフィックスドライバーがプリインストールされているが、そのドライバーのOpenGLレイヤーはソフトウェア実装であり、OpenGLを利用したグラフィックスソフトウェアを満足に動作させることはできない[103]。グラフィックスハードウェアベンダーのICDをインストールするまで、OpenGL APIによってハードウェアアクセラレーターを直接駆動することはできない[104][105][106]。
ANGLE
[編集]GoogleのANGLE[107]プロジェクトのように、OpenGLそのものではなく、内部でDirect3Dを使用したラッパーを経由して、Windows上でWebGLやOpenGL ESを間接的に実現するライブラリも存在する。ANGLEはハードウェアベンダーのOpenGLドライバー(ICD)を経由せず、Direct3Dを利用してOpenGL ES APIを実現している[108][109]。
GPGPU
[編集]DirectXはバージョン11において、GPGPU用APIであるDirectComputeをDirect3Dの一部(コンピュートシェーダー)として包括的に実装している。OpenGLもまたバージョン4.3において、Direct3Dと同様のコンピュートシェーダーを導入している。なお、Direct3D/OpenGLともに、GPGPUを含むクロスプラットフォームなヘテロ環境用アクセラレーターAPIであるOpenCLとの連携(相互運用)を行なう拡張機能が用意されている[110][111]。
脚注
[編集]注釈
[編集]- ^ 当時ゲームの実行プラットフォームとして世界を席巻していたのは任天堂やセガに代表される日本企業のゲーム専用機だった。
- ^ その後、DirectX 8では稲妻のX、DirectX 9では緑のXがロゴとして使われるようになったため、この旧ロゴはほとんど目にすることがなくなっている[40]。
- ^ よく似た技術にWindows PEがあり、WinPEはCDやUSBメモリから起動することもできる。
- ^ 事前に
WINVER
および_WIN32_WINNT
マクロを適切に定義することで、旧OS向けに新SDKで開発できる。 - ^ ただし、OpenGLはモデラーやシーンエディターなどによって対話的に行う作業環境のリアルタイムプレビュー表示に用いられるものであり、最終的なレンダリング出力にOpenGLそのものが用いられることはまずない。プロダクション品質の最終出力にはRenderManなどのソフトウェアレンダラーが用いられ、グローバルイルミネーションのために必要となる膨大な照明計算を高速化する際のハードウェアアクセラレーションにも、NVIDIA IrayやRadeon ProRenderのようにCUDAやOpenCLなどが使われるため、クライアントや顧客が手にする製品としての映像はOpenGLによる出力ではない。
出典
[編集]- ^ DirectXとは - IT用語辞典 e-Words
- ^ a b c d Download DirectX End-User Runtime from Official Microsoft Download Center
- ^ a b c 最新版の DirectX をインストールする方法 - Microsoft サポート
- ^ ゲーム開発者のための DirectX のインストール | Microsoft Docs
- ^ Windows 7、Windows Server 2008 R2、および Windows Server 2012 では、d3dcompiler の更新プログラムが欠落しているため、.NET Framework 4.7 のインストールがブロックされる - Microsoft サポート
- ^ XInput Versions - Windows applications | Microsoft Docs
- ^ XAudio2 Versions - Windows applications | Microsoft Docs
- ^ “「PCゲームのお作法」第1回”. 2013年8月16日閲覧。
- ^ “「DirectX Runtime」Webインストーラの2011年4月版が登場。今回もアップデートはとくになし”. 2013年8月16日閲覧。
- ^ COM による DirectX のプログラミング
- ^ Where is the DirectX SDK?
- ^ DirectML の概要 - Windows applications | Microsoft Docs
- ^ DirectComposition - Win32 apps | Microsoft Learn
- ^ Architecture and components - Win32 apps | Microsoft Learn
- ^ Taking Advantage of High-Definition Mouse Movement - Win32 apps | Microsoft Learn
- ^ 高解像度マウス動作の使用 | Microsoft Learn
- ^ Microsoft Releases DirectAnimation - Stories
- ^ DirectAnimation Samples | Microsoft Learn
- ^ DirectX Media Objects (Windows)
- ^ DirectStorage (コンテンツ) - Microsoft Game Core | Microsoft Learn
- ^ Microsoft、GPU展開でゲームのロード時間を大幅短縮する「DirectStorage 1.1」 | マイナビニュース
- ^ GitHub - microsoft/DirectStorage: DirectStorage for Windows is an API that allows game developers to unlock the full potential of high speed NVMe drives for loading game assets.
- ^ 64-bit programming for Game Developers - Win32 apps | Microsoft Learn
- ^ Windows 10 ゲームのテクノロジ - Windows アプリの開発
- ^ 【後藤弘茂のWeekly海外ニュース】GPUの進化に対応したMicrosoftの次世代API「DirectX 12」の背景 - PC Watch
- ^ a b “Microsoftの開発者向けイベント「Build 2013」で見えたWindows 8.1。「DirectX 11.2」とUI面の改良がポイントに”. 2013年8月16日閲覧。
- ^ “DirectX8 For NEC98”. ベクター. 2013年8月17日閲覧。
- ^ a b Craig's Musings: DirectX Then and Now (Part 1)
- ^ “米Microsoft、「DirectX 3.0」を発表”. PC Watch (1996年9月26日). 2012年5月9日閲覧。
- ^ 「DirectXの新版8.0が正式出荷開始 CD-ROMでも入手可能」『日経ソフトウエア(2001/1)』第4巻第1号、日経BP、2000年12月24日、56頁。「米Microsoftは11月11日,…DirectXの新版8.0…を出荷開始した。(「…」は該当記事を省略)」
- ^ DirectX 11.1 and Windows 7 | Games for Windows and the DirectX SDK blog
- ^ DirectX 12's new rendering features are coming to DirectX 11.3 too | PC Gamer
- ^ DirectX 12 Lights Up NVIDIA’s Maxwell Launch - DirectX Developer Blog
- ^ 西川善司の3DGE:新しく来るDirectXは「12」だけじゃない。突如浮上した「DirectX 11.3」とは何か? - 4Gamer.net
- ^ Direct3D 12 特集 | iSUS
- ^ Raymond Chen (2004年1月22日). “What happened to DirectX 4?”. The Old New Thing. 2022年12月3日閲覧。
- ^ Hecker, Chris (1994-09). “Tour of WinG”. Game Developer (CMP / United Business Media) .
- ^ a b David, Carddock (2007年3月28日). “Alex St John Interview”. Shack News. 2014年1月1日閲覧。
- ^ GitHub - microsoft/DxCapsViewer: DirectX Capabilities Viewer utility (dxcapsviewer.exe)
- ^ DirectXの旧ロゴが放射能注意のシンボルに似ているわけ - Diary on wind
- ^ Where did DirectX code names come from? - The Old New Thing
- ^ DirectXの生みの親の1人が55歳で死去。社内で「Beastie Boys」と呼ばれた反骨者たちの功績 | ハーバー・ビジネス・オンライン
- ^ Prosise, Jeff (1994年10月). “Advanced 3-D Graphics for Windows NT 3.5:Introducing the OpenGL Interface, Part I”. Microsoft Systems Journal Volume 9 Issue 10 (Microsoft).
- ^ “OpenGL Interface in Windows NT 3.5”. マイクロソフト (31 October 2006). 1 April 2014閲覧。
- ^ IGDA Japan chapter - Khronos Group、OpenGL 3.2を発表 12ヵ月で3回目のバージョンアップ Direct3Dアプリケーションからの移植性に関する記述がある。ジオメトリシェーダーを搭載したDirectX 10のリリースは2006年、対するOpenGL 3.2のリリースは2009年。
- ^ 4Gamer.net ― OpenGLはDirectX 11を超え,OpenGL ESは据え置き型ゲーム機と同等以上に。Khronosの最新動向レポート DirectX 11のCompute Shader仕様をそのまま取り入れた旨の記述がある。
- ^ セガ、Windows CEをベースとした新世代ゲーム機「Dreamcast」を発表
- ^ WindowsCE SDK for Dreamcast[リンク切れ]
- ^ X-Box解析シリーズ「OSとCPU編」 | 後藤弘茂のWeekly海外ニュース
- ^ J. Allard, PC Proのインタビュー 2004年4月
- ^ DirectShow Samples - Win32 apps | Microsoft Learn
- ^ 3Dグラフィックス・マニアックス(5) GPUとシェーダ技術の基礎知識(5) | マイナビニュース
- ^ Direct3D 9Ex の機能強化 - Win32 apps | Microsoft Learn
- ^ DirectX SDKs of a certain age | Games for Windows and the DirectX SDK blog
- ^ DOS/V POWER REPORT | Impress Japan
- ^ AMDのGPGPU戦略は新章へ - ATI Streamの展望、DirectX Compute Shaderの衝撃 (4) 今後のGPGPU動向は? | マイナビニュース
- ^ ASCII.jp:GPGPUをWindowsでサポートする「DirectCompute」 (2/2)|あなたの知らないWindows
- ^ DirectX 11.1 and Windows 7 Update | Games for Windows and the DirectX SDK blog
- ^ 方法: アプリケーションのグラフィックス診断を無効にする
- ^ 4Gamer.net ― [SIGGRAPH]Khronos,OpenGL 4.1を発表。カンファレンスからその詳細を確認する
- ^ 4Gamer.net ― [SIGGRAPH]ついにDirectX 11を凌駕した!? Khronosに聞く「OpenGL 4.2」の正体
- ^ 4Gamer.net ― OpenGLはDirectX 11を超え,OpenGL ESは据え置き型ゲーム機と同等以上に。Khronosの最新動向レポート
- ^ 4Gamer.net ― ValveはなぜSource EngineをLinux+OpenGL環境へ移植したのか。GTC 2013のValveセッションレポート
- ^ 2013*年末企画『AMDの新グラフィックAPI“Mantle”その一連の動向に迫る』 | Game*Spark - 国内・海外ゲーム情報サイト
- ^ AMD独自グラフィックスAPI「Mantle」の詳細が明らかに。理論上はGeForceのMantle対応も可能!? - 4Gamer.net
- ^ [GDC 2014]DirectX 12,ついに発表。その特徴に迫る - 4Gamer.net
- ^ Windows 10 | GeForce
- ^ Windows 10環境におけるRadeonとAPUの優位性をAMDがアピール。DX12世代ではマルチGPUのトレンドが変わるか - 4Gamer.net
- ^ DirectX Raytracing and the Windows 10 October 2018 Update - DirectX Developer Blog
- ^ Direct Machine Learning (DirectML) | Microsoft Docs
- ^ インテル® インテグレーテッド・グラフィックス上のマシンラーニングを高速化する Windows® 10 May 2019 Update
- ^ “Microsoft、「DirectX 12 Ultimate」を発表 - 窓の杜”. 2022年2月6日閲覧。
- ^ Direct3D エクステンション (D3DX) C/C++ リファレンス
- ^ D3DX (Direct3D 9)
- ^ Living without D3DX | Games for Windows and the DirectX SDK blog
- ^ DirectXMath (Windows)
- ^ Introducing DirectXMath | Games for Windows and the DirectX SDK blog
- ^ Microsoft/DXUT · GitHub
- ^ Microsoft/FX11 · GitHub
- ^ Download DirectX SDK - (June 2010) from Official Microsoft Download Center
- ^ DirectX SDK Samples Catalog | Games for Windows and the DirectX SDK blog
- ^ Helper Structures and Functions for D3D12 | Microsoft Docs
- ^ DirectX-Graphics-Samples/Libraries/D3DX12 at master · Microsoft/DirectX-Graphics-Samples
- ^ DirectX-Graphics-Samples/MiniEngine at master · Microsoft/DirectX-Graphics-Samples
- ^ Direct3D 12 Programming Environment Setup | Microsoft Docs
- ^ Memory Management in Vulkan and DX12 P.33 AMD 2018年
- ^ DirectX-Graphics-Samples/Libraries/D3DX12Residency at master · Microsoft/DirectX-Graphics-Samples
- ^ .NET開発者のためのDirectX連携手法 - @IT
- ^ マイクロソフト、ゲーム開発環境「XNA」を2014年4月に終了 | GGSOKU - ガジェット速報
- ^ Home | SharpDX
- ^ sharpdx/SharpDX at 2.6.3 - C#
- ^ Release Latest stable release · sharpdx/SharpDX
- ^ sharpdx/SharpDX: SharpDX GitHub Repository
- ^ Windows 7の新機能をC#やVBで利用するには? - @IT
- ^ Windows API Code Pack の過去、現在、そして未来 - オペレーティングシステム開発統括部 - Site Home - MSDN Blogs, Internet Archive
- ^ NuGet Gallery | Windows 7 API Code Pack 1.0.0
- ^ Aero Glass: Create Special Effects With The Desktop Window Manager | Microsoft Learn
- ^ AutoCAD 2008 の動作環境
- ^ Countdown 2022:新機能紹介 vol.3 – Vectorworks Design Blog
- ^ OpenGL - Win32 apps | Microsoft Docs
- ^ wglGetProcAddress function (wingdi.h) - Win32 apps | Microsoft Docs
- ^ Getting Started - OpenGL Wiki
- ^ RhinoはVistaで動作しますか? [McNeel Wiki]
- ^ OpenGL and Windows Vista - Windows Performance Blog - Site Home - MSDN Blogs, Internet Archive
- ^ DailyTech - OpenGL Now Natively Supported in Windows Vista, Internet Archive
- ^ Loading an OpenGL Installable Client Driver - Windows drivers | Microsoft Docs
- ^ angle/angle - Git at Google
- ^ Windows上でANGLEを使って、WebGLレンダリング
- ^ CEDEC 2015まとめ:ゲームバー、Cortana、Edge、HoloLens、Bridge、DirectX 12、ANGLE――Windows 10はゲーム開発者に何をもたらすのか (4/5) - @IT
- ^ Khronos OpenCL Registry
- ^ OpenCL 1.2 Reference Pages