Platform SDK: DirectX

Direct3D インターフェイス

[Visual Basic]

 :  ここでは、C++ でのアプリケーション開発について説明する。DirectX for Visual Basic では、アプリケーションへの COM インターフェイスは直接には公開されない。

[C++]

Direct3D オブジェクトの機能を利用するには、インターフェイス IDirect3DIDirect3D2IDirect3D3、および IDirect3D7 を使用する。このセクションでは、DirectX 7.0 で導入された IDirect3D7 インターフェイスから順に IDirect3D インターフェイスまで、これら 3 つのインターフェイスの概要について説明する。

IDirect3D7 インターフェイス
IDirect3D7 インターフェイスは、名前からは従来のものと同じような印象を受けるが、実際にはまったく新しい Direct3D オブジェクトへのインターフェイスを表す。このオブジェクトは DrawPrimitive アーキテクチャをサポートおよび拡張するが、このトピックで既に説明した従来のインターフェイスはサポートしない。アプリケーションは、DirectDrawCreateEx 関数を呼び出して作成された DirectDraw オブジェクトの QueryInterface メソッドを呼び出すことによって、IDirect3D7 インターフェイスへのポインタを取得する。

IDirect3D7 インターフェイスは、アプリケーションでのレンダリング デバイスおよび頂点バッファの作成、ピクセル フォーマットの列挙など、IDirect3D3 インターフェイスと同じ機能を多数サポートしている。このインターフェイスは、テクスチャ作成機能を追加するため、テクスチャ インターフェイスについて DirectDraw サーフェスを問い合わせる必要はなくなる。

IDirect3D7 とその他のインターフェイスとの大きな違いは、ライティング、マテリアル、またはビューポート オブジェクトを作成するメソッドがないことである。このことは、IDirect3DDevice7 インターフェイスでの処理に反映されており、ライティング、マテリアル、およびビューポート パラメータを個別のオブジェクトとしてではなく、デバイスの内部データ構造の一部として組み込む。

IDirect3D7 オブジェクトは、「DirectX 7.0 での直接モードの変更点」で説明する機能をサポートする。

アプリケーションは、新しい IDirectDraw7 インターフェイスの QueryInterface メソッドを使用して IDirect3D7 インターフェイスへのポインタを取得する。詳細については、「Direct3D へのアクセス」を参照すること。

IDirect3D2 および IDirect3D3 インターフェイス
アプリケーションは、(新しい DirectDrawCreateEx 関数とは対照的に) DirectDrawCreate 関数で作成された DirectDraw オブジェクトから従来の IDirect3D2 および IDirect3D3 インターフェイスへのポインタを取得する。これらのインターフェイスは、DirectDraw オブジェクトの QueryInterface メソッドを呼び出して取得する。これらのインターフェイスを使用することにより、アプリケーションは、特定の DirectDraw オブジェクトがサポートする Direct3D デバイスのタイプを検出して列挙できる。また、これらのインターフェイスは、ビューポート、マテリアル、ライティングなどその他の Direct3D 直接モード オブジェクトの作成に必要なメソッドも公開する (ライティング、マテリアル、およびビューポートを個別のオブジェクトとして扱うという概念は、IDirect3D7 インターフェイスでは廃止されている)。

IDirect3D2IDirect3D との最も重要な違いは、IDirect3D2IDirect3D2::CreateDevice メソッドを実装しているという点である。このメソッドは、DrawPrimitive をサポートする Direct3D デバイスを作成する。IDirect3D2::CreateDevice メソッドで作成されるデバイスの詳細については、「Direct3D デバイス」を参照すること。

IDirect3D2 インターフェイスと同様、IDirect3D3 インターフェイスは Direct3D プログラミングの DrawPrimitive スタイルをサポートしている。さらに、IDirect3D3 インターフェイスは、IDirect3DDevice3 インターフェイスを導入することで DrawPrimitive スタイルの機能を拡張する。このインターフェイスにより、柔軟な頂点フォーマット、頂点バッファ、および新しいテクスチャ機能の概念が導入されている。詳細については、「頂点フォーマット」、「テクスチャ」、「頂点バッファ」、および「レンダリング」を参照すること。

アプリケーションは、QueryInterface メソッドを使用して DirectDraw オブジェクトから IDirect3D3 インターフェイスへのポインタを取得する。

IDirect3D インターフェイス
IDirect3D インターフェイスは、実行バッファの使用をサポートする。このインターフェイスは、既存のコードとの互換性のために用意されている。新しいアプリケーションでは IDirect3D7 インターフェイスを使用する。アプリケーションで実行バッファを使用している場合は、DirectX 7.0 が提供する機能には移行できない。詳細については、「DirectX 7.0 での直接モードの変更点」を参照すること。