DirectXとは
ハードウェアの性能を引き出す
DirectX は Micrsoft が自社のプラットフォーム向けに提供するゲームやマルチメディア処理に特化した API の総称です。開発者は DirectX を使用することで、ハードウェアの性能を最大限に発揮させることができ、高速な描画やサウンド制御、ゲームコントローラの利用などが可能となります。DirectX の主な用途はゲーム開発ですが、ゲーム以外でも高品質でリアルタイムな描画が必要なアプリケーションの開発に応用できます。
DirectX は C++ で書かれているネイティブの API であり .NET Framework ではありません。したがって、そのままの状態では C# や Visual Basic から利用することはできませんが、C++/CLI を用いて相互運用することは可能です。
Windows では、古くからウィンドウの描画には GDI (Graphics Device Interface)が用いられていました。GDI は基本的な 2D 処理の API のみで構成されているため、古いハードウェアでも実行可能な高い互換性がありますが、GDI はハードウェアを抽象化するためゲームのような高速な処理には適していません。また、Windows Vista 以降はデスクトップの描画にも DirectX が用いられるようになったため、GDI の描画は CPU によるソフトウェア処理で行われます。
DirectX に対応したハードウェアであれば、描画の計算を CPU ではなく、専用のハードウェアで行うため高速になります。通常、DirectX による描画は GPU (Graphics Processing Unit)によって処理されます。GPU は CPU とは異なり、並列処理に特化したアーキテクチャになっています。画像処理は、大量のピクセルや頂点データの変換や合成なので、直列的な計算速度よりも、並列的な処理が重要になるのです。
このように、特定の処理を専用のハードウェアで処理することをアクセラレーションと呼び、CPU を補助する追加の演算装置をアクセラレーター(または、最近は使われない表現だがコプロセッサとも)と呼びます。
DirectX はハードウェアの性能を引き出すために、OS やハードウェアの進化に合わせて頻繁にバージョンアップします。DirectX を利用するゲームやアプリケーションを動作させるには、OS やハードウェアが DirectX に対応していなければなりません。特に、描画処理に大きく影響する GPU の性能が重要になります。
また、DirectX は Microsoft が提供するシステムにおいてクロスプラットフォームです。Windows PC だけではなく Xbox 360 の開発にも使われており、Windows 8 の新しい UI にも対応しています。
DirectX と COM
DirectX は COM (Component Obect Model)として実装されているため、その設計は COM の規約に従っています。
COM は Microsoft が提唱するコンポーネントの設計規約であり、プログラミング言語や実行環境に依存することなく、定められたインターフェイスを通してオブジェクトが提供するサービスにアクセスできます。COM を用いることで、部品化されたソフトウェアを再利用・共有できるため、現在の Windows のコアを構成する重要な技術基盤となっています。
DirectX を利用するのに COM の知識は必ずしも必要ではありませんが、COM を理解することで DirectX の仕組みを深く理解でき、他のコンポーネントとの連携なども容易になるでしょう。
DirectX の種類
DirectX はバージョンによって構成が大きく異なるため、開発対象のバージョンと OS を事前に検討しなければいけません。最新の DirectX を使えば、新しい Windows OS や GPU の性能は引き出せますが、古い Windows やハードウェア環境では動作しなくなります。逆に、古い DirectX を使えば最新の機能や API が使えません。
まず、DirectX は Windows Vista の登場とともに大きく変更されており、Windows XP 以前の Windows をサポートするかどうかで選択が分かれます。Windows XP 以前は DirectX 9.0 が最新のバージョンであり、DirectX 10.0 以降のバージョンを使うことはできません。Windows XP と Xbox 360 の寿命が非常に長かったため、ゲーム業界では DirectX 9.0 世代の実装が 2012 年現在でも多く見られます。
Windows Vista から DirectX 10.0 が提供されましたが、Windows Vista が市場で成功しなかったため DirectX 10.0 世代は短命に終わり、Windows 7 と共に登場した DirectX 11 世代が現在の主流です。コンピュータにインストールされている DirectX のバージョンを確認するには dxdiag.exe (DirectX 診断ツール)を使います。
DirectX は複数の部品群からなる総称です。描画や入出力など、その役割に応じてライブラリに分けられており、開発者は必要なライブラリだけを利用できます。多くの場合 DirectX はゲーム開発に用いられるため、ゲーム画面を描画する 3D 処理が必須になると思われますが、テキストの描画やオーディオ処理のために DirectX を使うということも可能です。
ライブラリ | 説明 |
---|---|
Direct3D | 3D グラフィックスの描画に使用する |
Direct2D | 2D グラフィックスの描画に使用する |
DirectXMath | ベクトルや行列などの数学処理に使用する |
DirectWrite | テキストの描画とレイアウトに使用する |
XAudio2 | オーディオデバイスの制御、オーディオの再生やミキシングに使用する |
XInput | Xbox 360 コントローラーからの入力や制御に使用する |
上記のライブラリも、利用できる機能は DirectX のバージョンによって変わります。