Microsoft DirectX

提供: フリー百科事典『ウィキペディア(Wikipedia)』

(DirectX から転送)
DirectX
DirectX10 logo.png
Microsoft Windowsコンポーネント
詳細
搭載OS Windows 95 OSR2
Windows NT 4.0 SP3
以降のWindows

Microsoft DirectX(ダイレクトエックス)は、マイクロソフト社が開発したゲームおよびマルチメディア処理用のAPIの集合である。

DirectXコンポーネントのうち、グラフィックスを担うDirectX GraphicsはMicrosoft WindowsXboxXbox 360向けのゲーム開発で広く利用されている。DirectX互換のビデオカードを利用することにより、高品質の3Dグラフィックスを高速にレンダリングできるため、DirectXはこれ以外のソフトウェア産業、特にエンジニアリングの分野でも広く利用されている。

DirectXのランタイムライブラリSDKは、いずれもマイクロソフトのウェブサイトから無償でダウンロードできるが、プロプライエタリソースコードは非公開である。DirectXはWindowsに含まれているが、最新版をウェブサイトからダウンロードすることが可能である。

2009年11月現在の最新バージョンは、DirectX 11.0である。これは、Windows 7に同梱されており、Windows VistaにおいてはWindows Updateを通じて入手可能である。(DirectX 10以降は、Windowsのグラフィックアーキテクチャに大規模な修正が加えられた事と、Windows Display Driver Modelが導入された事から、Windows XPなどの旧Windows製品では利用できない。)

目次

[編集] DirectX のコンポーネント群

DirectXの機能はマネージコードインターフェイスのセットと同様にCOMインターフェイスの形で提供されている。

  • DirectX Graphics: DirectX 8からの名称で、下記の4つで構成される。
  • DirectX Audio: DirectX 8からの名称で、下記の3つで構成される。
  • DirectX Media: 下記の3つで構成される。
    • DirectAnimation: 2D webアニメーション用
    • DirectShow: 各種音声動画の再生・作成
    • DirectTransform: webのインタラクティブ性と高レベルな3DグラフィックスのためのDirect3D Retained Mode。
  • DirectInput: キーボードマウスゲームパッドジョイスティックの入力処理(Xbox360のためのXInputを除き8以降更新されていない。キーボードやマウスはWM INPUTを代わりに利用すること)
  • DirectPlay: ゲーム用ネットワーク通信(DirectInputと同様に8以降更新されていない)
  • DirectX Media Objects: エンコーダー、デコーダー、エフェクトといったストリーミングオブジェクトのサポート
  • DirectSetup: DirectXランタイムのセットアップ用であり、正確にはAPIではない。
  • DirectX Video Acceleration(DXVA): 動画処理 API。バージョン1.0はDirectShowの一部だったが、Windows Vistaから利用可能なバージョン2.0はDirectShowやMedia Foundationからは独立している。

将来的にはDirectInputがXInputに、DirectSoundがXACTに、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がマルチメディア機能を担うことになった。DirectX1から5までの開発でのドタバタは、アイスラーのブログに詳しく書かれている[1]

DirectXの登場より前に、マイクロソフトはOpenGLをWindowsNTに搭載してしまっていた。OpenGLは、動作に(当時においては)ハイスペックな環境が必要だった上に、用途もCADやエンジニアリングに限られていた。そんな中Direct3Dは、ゲーム用としてはオーバースペック気味だったOpenGLの軽量版として設計され、ここからDirect3DとOpenGLとの、ユーザー同士の対立が始まった。Windows専用だったDirect3Dはマイクロソフトの3E戦略(embrace,extend,extinguish―吸収、拡大、根絶)だとOpenGLユーザーから非難されることとなった。しかしDirectXには、サウンドやジョイスティックなど、OpenGLがカバーできない機能が含まれていたため、DirectX上の他のAPIとOpenGLとを組み合わせて使われることが多かった。最近ではOpenGLとSDLの組み合わせも多くなってきている。

ゲーム専用機では、セガDreamcastWindowsCEと共にDirectXが世界で初めて用いられた[2]。その後、マイクロソフトのXboxXbox360にも搭載された。XboxのコンソールAPIはマイクロソフトとNVIDIA(Xboxのカスタムグラフィックチップの開発元)で共同開発された。Xbox APIはDirectX8.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]

[編集] リリース履歴

バージョン 概要 日付
WinGDCI Windows 3.1時代
DirectX 1.0 ゲーム作成用のAPI集GameSDKとして発表された 1995年10月
DirectX 2.0 Direct3D (Immediate Mode, Retained Mode) の登場 1996年6月
DirectX 3.0 DirectSound3D登場、DirectInputの統合 Windows NT 4.0ではSP3以降に同梱 1996年9月25日
ActiveMovie DirectShowの前身 1996年11月5日
DirectX 4.0 登場予定だったが、DirectX 3.0からはわずかな変更であり、既にDirectX 5.0がロードマップ上にあったため、ベンダーの要望によりキャンセルされた。
DirectX 5.0 Direct3DにDrawPrimitive(OpenGLのようなプリミティブ単位の描画機能)が登場。Windows 98に搭載。 1997年8月4日
DirectX Media DirectShowおよびDirectAnimation搭載 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の仮想化技術の実装。 2008年
DirectX 11 Windows Vista SP2とWindows 7で利用可能。高精細な描画を可能にするテッセレーションのサポートや新たな命令セットが追加されたほか、GPUコンピューティングを実現するDirectX Compute Shader、マルチコアCPUに対応したマルチスレッディング処理、HDR圧縮などの新機能を実装している。 2009年

[編集] 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を再利用しないこととなった[5]

[編集] Managed DirectX

Managed DirectXは.NET Frameworkで動作するアプリケーションからDirectXを呼び出すためのAPIである。Managed DirectXを使うと、.NET Framework上で動作するどんな言語からでもDirectXを呼び出すことができる。また、テクスチャオブジェクトをSystem.Drawing.Bitmapオブジェクトから生成できるなど、.NET Frameworkとの相互運用も強化されている。

しかしManaged DirectX 2.0の開発は中止され、Microsoft XNAに置き換えられることになった。

[編集] SlimDX

Managed DirectXはキャンセルされたが、後継のXNAはC#からしか利用できない上、XBOXとWindows双方に互換性のあるコードを記述する必要がある。このため、.NET用にDirectXのAPIをカプセル化した、SlimDXと呼ばれるライブラリが有志によって開発・提供されている。

SlimDXはDirectX 10 APIへのアクセスもサポートしているため、固定機能パイプライン等の新しいDirectX APIの利用、Windows APIやDirectShow等との連携、GUI、Ogg再生などのサードパーティ製ライブラリの利用、またWindows専用アプリケーションの開発などをすることができる。

2007年6月30日に初期リリースがなされて以降開発が続いており、2008年6月にはベータから正式版に移行した。

SlimDX では、以下のAPIが完全にサポートされている。

  • Direct3D 9
  • Direct3D 10
  • DXGI
  • DirectInput
  • XInput
  • Raw input
  • XAudio 2
  • X3DAudio
  • DirectSound

[編集] Windows API Code Pack for Microsoft .NET Framework

SlimDXとは別に、Microsoft自身でオープンソースのライブラリ/サンプルとして実装が進められている。

Windows VistaやWindows7の拡張的なUI機能等の対応が主な内容だが、DirectX10以降のサポートも含まれている。

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との関係

DirectXのうちDirectX Graphicsは、同じく三次元グラフィックスを扱うためのAPI集合であるOpenGLとしばしば比較される。

主な違いは、DirectXは基本的に3DグラフィックAPIに限定されるものではなく、サウンド処理や入出力処理、ネットワーク処理までを内包するトータルなゲーム作成用API/SDKを指向するものである一方、OpenGLは純然たる3DグラフィックAPIとして設計されている点にある。またDirectXはWindowsや、Windowsを採用したDreamcastやXbox、XBOX360等のゲーム機の動作する限られたプラットフォームでしかサポートされないのに対し、OpenGLはクロスプラットフォームであるという点である。

DirectXはその出自から、主にWindows用ゲームの分野で使用されてきたが、現在ではDirect3Dに関しては同環境における標準的な3DグラフィックAPIとしても用いられるようになり、ゲームに限らない一般的な3Dアプリケーションや、オペレーティングシステムのグラフィカルシェル環境にまで用いられるようになった。

一方のOpenGLは、歴史的および機能的な理由から、3DCGの製作工程やCAD、データ可視化などの用途に、グラフィックワークステーションやEWS等のプロフェッショナルな分野で使用されてきた。また現在ではパーソナルユーザー向けの3Dデスクトップ環境において標準的な描画APIとしても用いられており、これらの環境では3DビデオゲームのグラフィックAPIとしても標準的な立場にある。このように、両者をその用途によって明確に区別することは困難となりつつある。

またDirectXが標準的な3DグラフィックAPIとして定着したPC/Windows系の環境においてもOpenGLは今なお共存しており、実際にDirectXの登場以前から登場初期頃には、PC (Windows) 用ゲームの3DグラフィックAPIとしてOpenGLや、OpenGLを簡略化し自社製グラフィックカードVoodooの専用APIとしたGlideがデファクトスタンダードとして用いられて来た歴史もあり、両者を比較する文脈においてよく言われるような単純な競合関係として説明することも、実態として困難と言える。

[編集] 関連項目

[編集] 外部リンク

[編集] 脚注