Microsoft DirectX
| DirectX Microsoft Windows コンポーネント |
|
|---|---|
| 詳細 | |
| 標準提供 | Windows 95 OSR2 Windows NT 4.0 SP3 以降のWindows |
Microsoft DirectX(ダイレクトエックス)は、マイクロソフトが開発したゲーム・マルチメディア処理用のAPIの集合である。
DirectXコンポーネントのうち、グラフィックスを担うDirectX GraphicsはMicrosoft Windows・Xbox・Xbox 360向けのゲーム開発で広く利用されている。DirectX互換のビデオカードを利用することにより、高品質の3Dグラフィックスを高速にレンダリングできるため、DirectXはこれ以外のソフトウェア産業、特にエンジニアリングの分野でも広く利用されている。
DirectXのランタイムライブラリとSDKは、いずれもマイクロソフトのウェブサイトから無償でダウンロードできるが、プロプライエタリでソースコードは非公開である。また、Windows 8からはWindows SDKに統合された。
2013年2月現在の最新バージョンは、DirectX 11.1である。これは、Windows 8専用のバージョンであり、Windows 7・Windows VistaにおいてはDirectX 11.0が最新バージョンとなる。
目次 |
DirectX のコンポーネント群 [編集]
DirectXの機能はマネージコードインタフェースのセットと同様にCOMインタフェースの形で提供されている。
- DirectX Graphics: DirectX 8からの名称。
- DirectDraw: 2次元グラフィックス(DirectX 7まで存在)。
- Direct3D: 3次元グラフィックス。
- Direct2D: Windows 7から利用可能な、新しい2次元グラフィックスAPI。
- DirectWrite: Windows 7から利用可能な、新しい高品位テキスト描画API。
- DirectX Audio: DirectX 8からの名称。
- DirectSound: サウンド再生及び録音。
- DirectSound3D(DS3D): 3次元サウンド再生。
- DirectMusic: DirectMusic Producerで作成された音楽トラックの再生。
- XACT
- XAudio2
- DirectSound: サウンド再生及び録音。
- DirectX Input
- DirectPlay: ネットワーク通信。8以降更新されていない。
- DirectShow: 各種音声・動画の再生・作成。Windows SDKに移行。
- DirectAnimation: 2D webアニメーション用。
- DirectTransform: webのインタラクティブ性と高レベルな3DグラフィックスのためのDirect3D Retained Mode。
- DirectX Media Objects: エンコーダー、デコーダー、エフェクトといったストリーミングオブジェクトのサポート。
- DirectSetup: DirectXランタイムのセットアップ用であり、正確にはAPIではない。
- DirectX Video Acceleration(DXVA): 動画処理 API。バージョン1.0はDirectShowの一部だったが、Windows Vistaから利用可能なバージョン2.0はDirectShowやMedia Foundationからは独立している。
歴史 [編集]
1994年終盤、マイクロソフトはWindows 95をリリースしようとしていたが、当時のプログラマーは、Windows 95よりもむしろMS-DOSの方がゲームプログラミングに適していると考える傾向にあった。「どのようなプログラムを作れるか」というのはOSの評価基準として大きなウェイトを占める。マイクロソフトの三人の社員、クレイグ・アイスラー、アレックス・ジョン、エリック・イングシュトロームは、この傾向を危惧していた。
MS-DOSの環境下では、プログラムはビデオカード、キーボード、マウス、サウンドカードなど様々なシステムパーツに直接アクセスできていたが、Windows 95ではメモリ保護のためにこれらの直接のアクセスが制限されてしまっていた。あと数ヶ月でWindows 95がリリースされるという中で、マイクロソフトはWindows 95におけるプログラムの自由度を上げる仕組みを作り上げなければならなかった。アイスラーとジョンとイングシュトロームの三人はこれらの問題解決に乗り出した。こうして作られたのがDirectXである。
DirectXの最初のバージョンはWindows Games SDKとして1995年9月にリリースされた。これはWindows3.1にあったWinG APIとDCIとを32ビット用に移植したものである。このとき、マイクロソフトはATIの開発チームからゲームグラフィックの基本部分についての技術提供を受けた。これ以降、アイスラー(開発リーダー)、ジョン、イングシュトローム(プログラム責任者)の三人のチームを中心としてDirectXの開発が進められ、最終的にはこれ以降のすべてのWindowsにおいてDirectXがマルチメディア機能を担うことになった。DirectX 1から5までの開発でのドタバタは、アイスラーのブログに詳しく書かれている[1]。
DirectXの登場より前に、マイクロソフトはOpenGLをWindows NTに搭載してしまっていた。OpenGLは、動作に(当時においては)ハイスペックな環境が必要だった上に、用途もCADやエンジニアリングに限られていた。そんな中Direct3Dは、ゲーム用としてはオーバースペック気味だったOpenGLの軽量版として設計され、ここからDirect3DとOpenGLとの、ユーザー同士の対立が始まった。Windows専用だったDirect3Dはマイクロソフトの3E戦略(embrace,extend,extinguish―吸収、拡大、根絶)だとOpenGLユーザーから非難されることとなった。しかしDirectXには、サウンドやジョイスティックなど、OpenGLがカバーできない機能が含まれていたため、DirectX上の他のAPIとOpenGLとを組み合わせて使われることが多かった。後にはOpenGLとSDLの組み合わせも多い。
ゲーム機では、セガのドリームキャストにWindows CEと共にDirectXが世界で初めて用いられた[2]。その後、マイクロソフトのXboxとXbox 360にも搭載された。XboxのコンソールAPIはマイクロソフトとNVIDIA(Xboxのカスタムグラフィックチップの開発元)で共同開発された。Xbox APIはDirectX 8.1に近いが、コンソール上からアップデートができないところが他と異なる。XboxのコードネームはDirectXboxだったが、商品名は短縮してXboxとなった[3]。
2002年にマイクロソフトは、以前よりもはるかに長いシェーダプログラムを扱えるピクセル・バーテックスシェーダバージョン2.0をサポートしたDirectX 9をリリースした。2004年8月にはシェーダモデル3.0を導入したDirectX 9.0cをリリースし、それ以降もDirectX一式の更新を続けている。
2005年4月の時点でDirectShowはDirectXから取り除かれ、代わりにMicrosoft Platform SDKへ移動した。しかしDirectShowのサンプルをビルドするためにはDirectXが必要である[4]。
DirectComputeについて、2008年11月に開催されたハードウェア技術者向け国際会議「WinHEC 2008」にて「DirectX 10.1からサポートする」との発表があった。 これによりDirectX 10世代のGPUでも、DirectComputeが利用できるようになった。
リリース履歴 [編集]
| バージョン | 概要 | 日付 |
|---|---|---|
| WinG、Display Control Interface | Windows 3.1時代。 | |
| DirectX 1.0 | ゲーム作成用のAPI集GameSDKとして発表された。 | 1995年10月 |
| DirectX 2.0 | Direct3D (Immediate Mode, Retained Mode) の登場。 | 1996年6月 |
| DirectX 3.0[5] | DirectSound3D登場、DirectInputの統合。Windows NT 4.0ではSP3以降に同梱。 | 1996年9月25日 |
| ActiveMovie1 | DirectShow の前身。ActiveX の1コンポーネントであり、DirectX には含まれない。 | 1996年11月5日 |
| DirectX 4.0 | 登場予定だったが、DirectX 3.0からはわずかな変更であり、既にDirectX 5.0がロードマップ上にあったため、ベンダーの要望によりキャンセルされた。 | |
| 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日 |
| DirectX 8.1 | Windows XPに搭載。Windows 2000・Me・98用に単体配布もされている。このバージョンより95が対象外となった。 | 2001年 |
| DirectX 8.2 | Windows 2000およびWindows XPで使用可能。短期間配布された。 | 2002年 |
| DirectX 9.0 | 各コンポーネントの機能強化が中心。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以降でのみ、利用可能。 | 2007年 |
| DirectX 10.1 | Windows Vista SP1以降でのみ、利用可能。GPUの仮想化技術の実装。DirectComputeをサポート。 | 2008年 |
| DirectX 11.0 | Windows Vista SP2とWindows 7で利用可能。高精細な描画を可能にするテッセレーションのサポートや新たな命令セットが追加されたほか、GPUコンピューティングを実現するDirectX Compute Shader、マルチコアCPUに対応したマルチスレッディング処理、HDR圧縮などの新機能を実装している。 | 2009年 |
| DirectX 11.1 | Windows 8でのみ利用可能。 | 2012年 |
- DirectX 4
- DirectX 4はリリースされなかった。Raymond Chenの著書The Old New Thingによると、DirectX 3がリリースされた後に、マイクロソフトは4と5の開発を同時に始めた。Version 5がより実りの多いものになる予定だったのに対し、version 4は小幅な機能拡張を伴う短期リリース版となる予定だった。DirectX 4に実装される予定の機能はゲーム開発者の興味をそそらずに棚上げされる結果となり、またドキュメントはこれら2つのバージョンを明確に区別して執筆しており、マイクロソフトは(version 5の)機能はversion 5のためのものだと記述するため、version 4を再利用しないこととなった[6]。
Managed DirectX [編集]
Managed DirectXは.NET Frameworkで動作するアプリケーションからDirectXを呼び出すためのAPIである。Managed DirectXを使うと、.NET Framework上で動作するどんな言語からでもDirectXを呼び出すことができる。また、テクスチャオブジェクトをSystem.Drawing.Bitmapオブジェクトから生成できるなど、.NET Frameworkとの相互運用も強化されている。
しかしManaged DirectX 2.0の開発は中止され、Microsoft XNA(XNA)に置き換えられることになった(XNAは2014年4月に終了)。
SlimDX [編集]
Managed DirectXはキャンセルされたが、後継のXNAは基本的にC#からしか利用できない上、Xbox 360とWindows双方に互換性のあるコードを記述することを主目的として開発されており、Managed DirectXの方向性とはやや異なるAPI(フレームワーク)となっている。このため、Windowsプラットフォームにおける.NET用にDirectXのAPIをカプセル化した、SlimDXと呼ばれるライブラリが有志によって開発・提供されている。
詳細は「SlimDX」を参照
Windows API Code Pack for Microsoft .NET Framework [編集]
SlimDXとは別に、Microsoft自身でオープンソースのライブラリ/サンプルとして実装が進められている。
Windows VistaやWindows 7の拡張的なUI機能等の対応が主な内容だが、DirectX 10以降のサポートも含まれている。
2009年4月からアルファ版が公開されていたが、同年8月6日にバージョン1.0に移行した。
Windows API Code Packでは、以下のAPIがサポートされている。
- Direct3D 11.0
- Direct3D 10.1/10.0
- DXGI 1.0/1.1
- Direct2D 1.0
- DirectWrite
- Windows Imaging Component (WIC) APIs.
(DirectWrite and WICは一部の対応)
OpenGLとの関係 [編集]
「OpenGL#DirectXとの関係」も参照
DirectXのうちDirectX Graphics (Direct3D) は、同じくリアルタイム3次元コンピュータグラフィックス (3DCG) を扱うためのAPI集合であるOpenGLとしばしば比較される。
主な違いは、DirectXは基本的に3DグラフィックAPIのみに限定されるものではなく、サウンド処理や入出力処理、ネットワーク処理までを内包するトータルなゲーム作成用API/SDKを指向するものである一方、OpenGLは純然たる3DグラフィックAPIとして設計されている点にある。またDirectXはWindowsや、Windowsを採用したDreamcastやXbox、Xbox 360等のゲーム機の動作する限られたプラットフォームでしかサポートされないのに対し、OpenGLはクロスプラットフォームであるという点である。
DirectXはその出自から、主にWindows用ゲームの分野で使用されてきたが、Direct3Dに関しては同環境における標準的な3DグラフィックAPIとしても用いられるようになり、ゲームに限らない一般的な3Dアプリケーションや、オペレーティングシステムのグラフィカルシェル環境にまで用いられるようになった。
一方のOpenGLは、歴史的および機能的な理由から、3DCGの製作工程やCAD、データ可視化などの用途に、グラフィックワークステーションやEWS等のプロフェッショナルな分野で使用されてきた。またパーソナルユーザー向けの3Dデスクトップ環境において標準的な描画APIとしても用いられており、これらの環境では3DビデオゲームのグラフィックAPIとしても標準的な立場にある。このように、両者をその用途によって明確に区別することは困難となりつつある。
また、Direct3Dが標準的な3DグラフィックAPIとして定着したPC/Windows系の環境においてもOpenGLは今なお共存しており、実際にDirectXの登場以前から登場初期頃には、PC (Windows) 用ゲームの3DグラフィックAPIとしてOpenGLや、OpenGLを簡略化し3dfx社製グラフィックカードVoodooの専用APIとしたGlideがデファクトスタンダードとして用いられて来た歴史もあり、両者を比較する文脈においてよく言われるような単純な競合関係として説明することも、実態として困難と言える。近年では、3DCG製作ソフトにおける作業中のリアルタイムプレビュー表示に、Direct3DとOpenGLのうちどちらを使用するかをユーザーが選択できるものも存在する。
なお、Windows Vista以降ではデフォルトでOpenGLはDirect3DのラッパーAPIとして実装されている。デバイスドライバにより、任意のレイヤーからラッパーAPIからネイティブAPIに置き換える、UNIXのDevice Indepence InterfaceとDevice Dependence InterfaceメカニズムをMicrosoft独自の仕様で取り込んだ物で、OpenGLアプリケーションを実行していても実はDirect3Dを駆動している場合がある(特に低価格グラフィックスボードはMicrosoftの実装によりOpenGLの実体をDirect3Dまかせにしている)。この機構はOpenGLのほかにGraphics Device Interface(GDI)にも適用されており、MicrosoftがDirectXの実装を推進する基盤となっている。
DirectXはGPGPU用APIであるDirectComputeをその一部として包括的に実装しており、Direct3Dとの相互連携が可能となっているが、OpenGLもまたクロスプラットフォームなGPGPU用APIであるOpenCLとの密接な連携を行なうことが可能となっている。
脚注 [編集]
- ^ Craig's Musings: DirectX Then and Now (Part 1)
- ^ WindowsCE SDK for Dreamcast
- ^ J. Allard, PC Proのインタビュー 2004年4月
- ^ [http://msdn2.microsoft.com/ja-jp/directx/Aa937789.aspx Release Notes (MSDN)]
- ^ “米Microsoft、「DirectX 3.0」を発表”. PC Watch (1996年9月26日). 2012年5月9日閲覧。
- ^ “What happened to DirectX 4?”. The Old New Thing (2004年1月22日). 2009年7月12日閲覧。
関連項目 [編集]
外部リンク [編集]
- DirectX (ダイレクトエックス) 最新ダウンロード/総合情報
- DirectX デベロッパーセンター(開発者向け)
- DirectX World - DirectX lessons. Learn how to build a graphic engine.
|
|||||||||||||||||||||||||||||