D3DXComputeNormals 函数

计算网格中每个顶点的单位法线。 提供以支持旧版应用程序。 使用 D3DXCompute TangentFrameEx 可取得更好的结果。

语法

HRESULT D3DXComputeNormals(
  _Inout_       LPD3DXBASEMESH pMesh,
  _In_    const DWORD          *pAdjacency
);

parameters

pMesh [in, out]

类型: LPD3DXBASEMESH

指向 ID3DXBaseMesh 接口的指针,表示规范化网格对象。

pAdjacency [in]

类型: const DWORD*

指向每个面三个 DWORD 数组的指针,该数组为创建的渐进式网格中的每个人脸指定三个邻居。 此参数是可选的,如果未使用,则应将其设置为 NULL

返回值

类型: HRESULT

如果函数成功,则返回值S_OK。 如果函数失败,则返回值可以是下列值之一:D3DERR_INVALIDCALL、D3DXERR_INVALIDDATA、E_OUTOFMEMORY。

备注

输入网格必须具有在其灵活顶点格式中指定的 D3DFVF_NORMAL 标志 (FVF) 。

顶点的法线是通过对共享该顶点的所有人脸的法线求平均值来生成的。

如果提供相邻性,则忽略复制的顶点并“平滑” 。 如果未提供相邻性,则复制顶点的法线将仅从显式引用它们的面取平均值。

此函数只需使用以下输入参数调用 D3DXComputeTangentFrameEx

D3DXComputeTangentFrameEx( pMesh,
                           D3DX_DEFAULT,
                           0,
                           D3DX_DEFAULT,
                           0,
                           D3DX_DEFAULT,
                           0,
                           D3DDECLUSAGE_NORMAL,
                           0,
                           D3DXTANGENT_GENERATE_IN_PLACE | D3DXTANGENT_CALCULATE_NORMALS,
                           pAdjacency,
                           -1.01f,
                           -0.01f,
                           -1.01f,
                           NULL,
                           NULL);

要求

要求
标头
D3DX9Mesh.h

D3dx9.lib

请参阅

网格函数