D3DXCompute Tangent 函数
计算纹理阶段中给定的纹理坐标的切向量。 提供以支持旧版应用程序。 使用 D3DXCompute TangentFrameEx 可取得更好的结果。
语法
HRESULT D3DXComputeTangent(
_In_ LPD3DXMESH Mesh,
_In_ DWORD TexStageIndex,
_In_ DWORD TangentIndex,
_In_ DWORD BinormIndex,
_In_ DWORD Wrap,
_In_ const DWORD *pAdjacency
);
参数
-
网格 [in]
-
类型: LPD3DXMESH
指向表示输入网格的 ID3DXMesh 接口的指针。
-
TexStageIndex [in]
-
类型: DWORD
表示纹理阶段的索引。
-
TangentIndex [in]
-
类型: DWORD
为切线数据提供使用索引的索引。 顶点声明表示用法;此索引使用使用情况索引修改使用情况。 有关顶点声明的详细信息,请参阅顶 点声明 (Direct3D 9) 。
-
BinormIndex [in]
-
类型: DWORD
为二进制数据提供使用索引的索引。 顶点声明表示用法;此索引使用使用情况索引修改使用情况。 有关顶点声明的详细信息,请参阅顶 点声明 (Direct3D 9) 。
-
包装 [in]
-
类型: DWORD
对于不换行,请将此值设置为 0;对于在 you 和 V 方向中包装,请将此值设置为 1。
-
pAdjacency [in]
-
类型: const DWORD*
指向每个要用相邻人脸索引填充的三个 DWORD 数组的指针。 此数组中的字节数必须至少为 ( (3 * GetNumFaces) * sizeof (DWORD) ) 。
返回值
类型: HRESULT
如果函数成功,则返回值S_OK。 如果函数失败,则返回值可以是下列值之一:D3DERR_INVALIDCALL、D3DXERR_INVALIDDATA、E_OUTOFMEMORY。
备注
如果网格顶点声明指定正切或二元字段, 则 D3DXCompute Tangent 将更新用户提供的任何正切或二进制数据。 或者,将 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);
要求
要求 | 值 |
---|---|
标头 |
|
库 |
|
另请参阅