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);

要求

要求
标头
D3DX9Mesh.h

D3dx9.lib

另请参阅

网格函数