DirectX Graphicsはビデオ・カードをコントロールし、グラフィックスの描画や表示などを行うためのインターフェースを提供するAPI群であり、ビットマップのような2次元画像の処理と、3次元のポリゴンなどで記述されたモデルの処理の両方の機能を持つ。
DirectX Graphicsを用いることで、ハードウェアの違いをあまり意識することなく、ハードウェアの性能を活かしたアプリケーションを開発できる。
DirectX Graphicsは、基本的な処理を行うための部分と、メッシュ処理や数値演算などの拡張的な処理を行う「Direct3DX」と呼ばれる部分で構成される。
DirectX Graphicsで使用する代表的なインターフェイスは次のとおり。
DirectX8では、今まで「DirectDraw」「Direct3D」と呼ばれていたグラフィックスの機能が「DirectX Graphics」として1つに統合された。これに伴い、初期化などの処理が大幅に単純になっていたり、多くのインターフェイスや関数、構造体の面罵変数の名前などが変更になっている。
大きな変更点は次のとおり
2次元のグラフィックス機能と3次元のグラフィックス機能が統合された。これにより、2次元と3次元の区別なしに同じような感覚で開発できたり、いろいろな処理が単純になった。
しかし、統合といっても実際にはDirectDrawが廃止されてDirect3Dの中にDirectDrawの機能が含まれたような形で、初期化処理やテクスチャ(2次元画像)の管理など「今までDirectDrawでやってきた2次元的な部分をDirect3Dでできるようになった」という感じになっている。つまり「DirectDrawとDirect3Dの両方を使ってゲームを作っていた場合はずいぶん楽に開発できるようになった」が、「DirectDrawのみでゲームを作っていた場合は、全てDirect3Dで作り直さなければならない」ということになる。
DirectDrawにあったブロック転送などの機能は残されているが、DirectX8ではブロック転送などを使うことは推奨されておらず、スプライトやテクスチャを用いて2次元画像の描画を行うことが推奨されている。今までどおりDirectDrawの機能を使いたい場合はDirectX7の手法で開発しなければならない。
DirectX7までは、画面の解像度や使用するデバイスなどをDirectDrawで設定して初期化していた。DirectDrawとDirect3D画統合されたことにより、シンプルで分かりやすい初期化処理になった。
DirectX7から導入された「D3DXユーティリティ」は、DirectX7まであった初期化の処理や画面の表示、クリアの処理などの機能がすべてデバイスのインターフェイスに統合された。
テクスチャ、頂点バッファなどのリソース管理をDirectX Graphicsが行ってくれるように設定できるようになった。今までは画面モードが変わったときなどにリソースを用意しなおさなければならなかったが、DirectX Graphicsがシステム・メモリ上にコピーを取っておき、自動的に復元する。
DirectX7までは頂点バッファをDrawPrimitiveなどに直接渡して描画していたが、DirectX8では「ストリーム」という仕組みを使って頂点バッファを渡すようになった。これに伴い、単なる配列だった頂点のインデックスが「インデックス・バッファ」と呼ばれるインターフェイスを使うようになった。
DirectX7ではテクスチャはDirectDrawのサーフェイスを使っていたが、DirectX8からはテクスチャ用のインターフェイスが提供されている。これにより、ミップマップやキューブ・テクスチャなど、複数の画像を持つテクスチャの扱いが少し楽になった。また、DirectX8からはテクスチャ・マッピングのパースペクティブ・コレクトが常に行われるようになった。
| BACK(ゲーム製作におけるビデオメモリの使い方) |