D3DXComputeTangent
テクスチャー ステージで指定されたテクスチャー座標の接線ベクトルを計算します。レガシー アプリケーションをサポートするために用意されています。良好な結果を得るには、D3DXComputeTangentFrameEx を使用します。
HRESULT
D3DXComputeTangent(
LPD3DXMESH Mesh,
DWORD TexStageIndex,
DWORD TangentIndex,
DWORD BinormIndex,
DWORD Wrap,
CONST DWORD * pAdjacency
);
パラメータ
- Mesh
ID3DXMesh インターフェイスへのポインターです。入力メッシュを示します。 - TexStageIndex
テクスチャー ステージを示すインデックスです。 - TangentIndex
接線データの使用方法インデックスを提供するインデックスです。頂点宣言は使用方法を示し、このインデックスは使用方法インデックスにより使用方法を修正します。頂点宣言の詳細については「頂点の宣言 (Direct3D 9)」を参照してください。 - BinormIndex
従法線データの使用方法インデックスを提供するインデックスです。頂点宣言は使用方法を示し、このインデックスは使用方法インデックスにより使用方法を修正します。頂点宣言の詳細については「頂点の宣言 (Direct3D 9)」を参照してください。 - Wrap
ラッピングなしの場合はこの値を 0 に、U 方向および V 方向にラッピングする場合は 1 に設定します。 - pAdjacency
面ごとの 3 つの DWORD 値を格納する配列へのポインターです。この配列に隣接する面のインデックスが格納されます。この配列内のバイト数は、((3 * ID3DXBaseMesh::GetNumFaces) * sizeof(DWORD)) 以上でなければなりません。
戻り値
成功すると、S_OK を返します。失敗した場合は、次のいずれかの値を返します。D3DERR_INVALIDCALL、D3DXERR_INVALIDDATA、E_OUTOFMEMORY
解説
メッシュ頂点宣言が接線または従法線フィールドを指定する場合、D3DXComputeTangent はユーザーが指定した接線または従法線データをすべて更新します。TangentIndex を D3DX_DEFAULT と設定するとユーザー指定の接線データの更新を防止できます。BinormIndex を D3DX_DEFAULT と設定すると、ユーザー指定の従法線データの更新を防止できます。TexStageIndex は D3DX_DEFAULT には設定できません。
D3DXComputeTangent は、従法線フィールド (BinormIndex)、接線フィールド (TangentIndex)、またはその両方を含むメッシュ頂点宣言に依存します。どちらも含まれていない場合、この関数は失敗します。
この関数は、次の入力パラメーターの D3DXComputeTangentFrameEx を単純に呼び出します。
D3DXComputeTangentFrameEx( Mesh, D3DDECLUSAGE_TEXCOORD, TexStageIndex, ( BinormIndex == D3DX_DEFAULT ) ? D3DX_DEFAULT : D3DDECLUSAGE_BINORMAL, // provides backward function compatibility BinormIndex, ( TangentIndex == D3DX_DEFAULT ) ? D3DX_DEFAULT : D3DDECLUSAGE_TANGENT, TangentIndex, D3DX_DEFAULT, // do not store normals 0, ( Wrap ? D3DXTANGENT_WRAP_UV : 0 ) | D3DXTANGENT_GENERATE_IN_PLACE | D3DXTANGENT_ORTHOGONALIZE_FROM_U, pAdjacency, -1.01f, -0.01f, -1.01f, NULL, NULL);
要件
ヘッダー: D3DX9Mesh.h 宣言
ライブラリ: D3dx9.lib 内容