ID3DXMesh::OptimizeInplace 方法

生成具有重新排序的人脸和顶点的网格,以优化绘制性能。 此方法对现有网格进行重新排序。

语法

HRESULT OptimizeInplace(
  [in]        DWORD        Flags,
  [in]  const DWORD        *pAdjacencyIn,
  [out]       DWORD        *pAdjacencyOut,
  [out]       DWORD        *pFaceRemap,
  [out]       LPD3DXBUFFER *ppVertexRemap
);

参数

Flags [in]

类型: DWORD

一个或多个 D3DXMESHOPT 标志的组合,指定要执行的优化类型。

pAdjacencyIn [in]

类型: const DWORD*

指向每个人脸三个 DWORD 数组的指针,该数组指定源网格中每个人脸的三个邻居。 如果边缘没有相邻面,则值0xffffffff。

pAdjacencyOut [out]

类型: DWORD*

指向每个面三个 DWORD 数组的指针,该数组指定优化网格中每个人脸的三个邻居。 如果边缘没有相邻面,则值0xffffffff。 如果为此参数提供的值为 NULL,则不返回相邻数据。

pFaceRemap [out]

类型: DWORD*

一个 DWORD 数组,每个人脸一个,用于标识与优化网格中每个人脸对应的原始网格面。 如果为此参数提供的值为 NULL,则不返回人脸重新映射数据。

ppVertexRemap [out]

类型: LPD3DXBUFFER*

指向 ID3DXBuffer 接口的指针的地址,该接口包含指定新顶点如何映射到旧顶点的每个顶点的 DWORD。 如果需要根据新的顶点映射更改外部数据,此重新映射非常有用。 如果为此参数提供的值为 NULL,则不返回顶点重新映射数据。

返回值

类型: HRESULT

如果该方法成功,则返回值D3D_OK。 如果方法失败,则返回值可以是下列值之一:D3DERR_INVALIDCALL、D3DXERR_CANNOTATTRSORT、E_OUTOFMEMORY。

备注

在运行 ID3DXMesh::OptimizeInplace 之前,应用程序必须通过调用 ID3DXBaseMesh::GenerateAdjacency 生成相邻缓冲区。 相邻缓冲区包含相邻数据,例如边缘列表和彼此相邻的面。

注意

如果网格与其他网格共享其顶点缓冲区,则此方法将失败,除非在 Flags 中设置了D3DXMESHOPT_IGNOREVERTS。

 

要求

要求
标头
D3DX9Mesh.h

D3dx9.lib

另请参阅

ID3DXMesh

ID3DXMesh::Optimize