その他の Direct3D エクステンション (D3DX)

その他の Direct3D エクステンション (D3DX)

Direct3D エクステンション (D3DX) は、ヘルパー サービスを提供するユーティリティ ライブラリである。これは Microsoft® Direct3D® の上位のレイヤである。

  • テクスチャ
  • 算術計算
  • その他
  • FLOAT16

Microsoft DirectX® 7.0  ソフトウェア開発キット (SDK) から、リソースの初期化を容易にするために、テクスチャと算術計算のサポートが始まった。DirectX 8.0 SDK では、D3DX コンテキストの初期化のサポートによって Direct3D の初期化が簡素化された。それ以降ライブラリは拡張されて、メッシュ、シェーダ、エフェクト、算術計算、およびテクスチャ マッピングのサポートを含む、高度な機能の集合体となった。

D3DX は、算術計算、テクスチャ処理、シェーダ操作などの基本的な機能を幅広くサポートすると共に、エフェクト ファイルやメッシュなどの高度な機能もサポートしている。さらには、行列スタック、単純な形状、エラー処理などの汎用ユーティリティもサポートしている。

テクスチャ

次のトピックでは、さまざまなテクスチャのサポートについて説明する。

テクスチャの色変換

D3DXLoadSurfacexxxD3DXLoadVolumexxxD3DXCreateTexturexxxD3DXCreateCubeTexturexxx、または 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 関数である。