その他の Direct3D エクステンション (D3DX)
その他の Direct3D エクステンション (D3DX)
Direct3D エクステンション (D3DX) は、ヘルパー サービスを提供するユーティリティ ライブラリである。これは Microsoft® Direct3D® の上位のレイヤである。
- テクスチャ
- 算術計算
- その他
- FLOAT16
Microsoft DirectX® 7.0 ソフトウェア開発キット (SDK) から、リソースの初期化を容易にするために、テクスチャと算術計算のサポートが始まった。DirectX 8.0 SDK では、D3DX コンテキストの初期化のサポートによって Direct3D の初期化が簡素化された。それ以降ライブラリは拡張されて、メッシュ、シェーダ、エフェクト、算術計算、およびテクスチャ マッピングのサポートを含む、高度な機能の集合体となった。
D3DX は、算術計算、テクスチャ処理、シェーダ操作などの基本的な機能を幅広くサポートすると共に、エフェクト ファイルやメッシュなどの高度な機能もサポートしている。さらには、行列スタック、単純な形状、エラー処理などの汎用ユーティリティもサポートしている。
テクスチャ
次のトピックでは、さまざまなテクスチャのサポートについて説明する。
- テクスチャの要件の確認。「テクスチャ」を参照すること。
- 標準のミップマップ テクスチャのサポート。「ミップマップの自動生成」を参照すること。
- キューブ マップのサポート。「キューブ環境マップ」を参照すること。
- ボリューム テクスチャのサポート。「ボリューム テクスチャ リソース」を参照すること。
- 環境マッピングのサポート。「環境マッピング」を参照すること。
- バンプ マッピングのサポート。「バンプ マッピング」を参照すること。
テクスチャの色変換
D3DXLoadSurfacexxx、D3DXLoadVolumexxx、D3DXCreateTexturexxx、D3DXCreateCubeTexturexxx、または D3DXCreateVolumeTexturexxx 関数のいずれかを使うときに、色変換が必要になる場合がある。たとえば、一方のサーフェイスが RGBA タイプで、もう一方が UVWQ であるような場合である。フォーマットが異なる場合の変換シーケンスは次のとおりである。
RGBA と UVWQ(L) とのマッピング
- R <-> U。R チャンネルは U チャンネルにマッピングされ、U チャンネルは R チャンネルにマッピングされる。
- G <-> V。G チャンネルは V チャンネルにマッピングされ、V チャンネルは G チャンネルにマッピングされる。
- B <-> W。B チャンネルは W チャンネルにマッピングされ、W チャンネルは B チャンネルにマッピングされる。
- A <-> Q/L。A チャンネルは Q または L チャンネル (変換後のフォーマットによって異なる) にマッピングされ、Q または L チャンネルは A チャンネルにマッピングされる。
R->U
G->V
B->W
A->Q ??? A->L
UV と RGBA とのマッピング
- U <-> R。U チャンネルは R チャンネルにマッピングされ、R チャンネルは U チャンネルにマッピングされる。
- V <-> G。V チャンネルは G チャンネルにマッピングされ、G チャンネルは V チャンネルにマッピングされる。
- 1 <-> B。1 は B チャンネルにマッピングされ、B チャンネルは 1 にマッピングされる。
- 1 <-> A。1 は A チャンネルにマッピングされ、A チャンネルは 1 にマッピングされる。
変換元にチャンネルが存在しない場合、そのチャンネルは 1 であると見なされる。ただし、A8 は例外で、R、G、B は 0 であると見なされる。次に例を示す。
U -> R
V -> G
1 -> B
1 -> A
算術計算
算術計算のサポートは一連の関数に含まれており、その内容は次のとおりである。
- 色の計算
- 平面
- 行列操作
- クォータニオン
- 2D ベクトル
- 3D ベクトル
- 4D ベクトル
基本的な 3D 算術計算タイプのサポートは、C++ オーバーロードと共に使うことによって拡張される。
これらの関数の詳細については、「関数」を参照すること。必要な関数を見つけやすいように、関数は複数のフォルダに分割されている。
FLOAT16
FLOAT16 データ型を使う場合は、制限値が最大 D3DX_16F_MAX であることに注意すること。 FLOAT16 の値がこれを上回ると、パイプラインで未定義の動作が発生する。「Direct3D エクステンション (D3DX) のその他の定数」を参照すること。
その他
ここに挙げるのは、これまでに示してきたカテゴリに含まれない D3DX 関数である。