D3DXSimplifyMesh 函数

使用提供的尽可能接近给定 MinValue 的权重生成简化的网格。

语法

HRESULT D3DXSimplifyMesh(
  _In_        LPD3DXMESH           pMesh,
  _In_  const DWORD                *pAdjacency,
  _In_  const D3DXATTRIBUTEWEIGHTS *pVertexAttributeWeights,
  _In_  const FLOAT                *pVertexWeights,
  _In_        DWORD                MinValue,
  _In_        DWORD                Options,
  _Out_       LPD3DXMESH           *ppMesh
);

parameters

pMesh [in]

类型: LPD3DXMESH

指向表示源网格的 ID3DXMesh 接口的指针。

pAdjacency [in]

类型: const DWORD*

指向每个人脸三个 DWORD 数组的指针,该数组指定要简化的网格中每个人脸的三个邻居。

pVertexAttributeWeights [in]

类型: const D3DXATTRIBUTEWEIGHTS*

指向 D3DXATTRIBUTEWEIGHTS 结构的指针,其中包含每个顶点组件的权重。 如果此参数设置为 NULL,则使用默认结构。 请参阅“备注”。

pVertexWeights [in]

类型: const FLOAT*

指向顶点权重数组的指针。 如果此参数设置为 NULL,则所有顶点权重都设置为 1.0。

MinValue [in]

类型: DWORD

顶点或人脸的数量,具体取决于 Options 参数中设置的标志,用于简化源网格。

选项 [in]

类型: DWORD

指定网格的简化选项。 可以设置 D3DXMESHSIMP 中的标志之一。

ppMesh [out]

类型: LPD3DXMESH*

指向 ID3DXMesh 接口的指针的地址,表示返回的简化网格。

返回值

类型: HRESULT

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

备注

此函数生成具有 MinValue 顶点或面的网格。

如果简化过程无法将网格减少到 MinValue,则调用仍然成功,因为 MinValue 是所需的最小值,而不是绝对最小值。

如果 pVertexAttributeWeights 设置为 NULL,则将以下值分配给默认 的 D3DXATTRIBUTEWEIGHTS 结构。

D3DXATTRIBUTEWEIGHTS AttributeWeights;
    
AttributeWeights.Position  = 1.0;
AttributeWeights.Boundary =  1.0;
AttributeWeights.Normal   =  1.0;
AttributeWeights.Diffuse  =  0.0;
AttributeWeights.Specular =  0.0;
AttributeWeights.Tex[8]   =  {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};

此默认结构是大多数应用程序应使用的结构,因为它只考虑几何和正常调整。 只有在特殊情况下,才需要修改其他成员字段。

要求

要求
标头
D3DX9Mesh.h

D3dx9.lib

请参阅

网格函数