ID3DXMesh::Optimize 方法
生成具有重新排序的人脸和顶点的新网格,以优化绘制性能。
语法
HRESULT Optimize(
[in] DWORD Flags,
[in] const DWORD *pAdjacencyIn,
[in, out] DWORD *pAdjacencyOut,
[in, out] DWORD *pFaceRemap,
[out] LPD3DXBUFFER *ppVertexRemap,
[out] LPD3DXMESH *ppOptMesh
);
参数
-
Flags [in]
-
类型: DWORD
指定要执行的优化类型。 此参数可以设置为 D3DXMESHOPT 和 D3DXMESH (中的一个或多个标志的组合,D3DXMESH_32BIT、D3DXMESH_IB_WRITEONLY和D3DXMESH_WRITEONLY) 除外。
-
pAdjacencyIn [in]
-
类型: const DWORD*
指向每个人脸三个 DWORD 数组的指针,该数组指定源网格中每个人脸的三个邻居。 如果边缘没有相邻面,则值0xffffffff。 请参阅“备注”。
-
pAdjacencyOut [in, out]
-
类型: DWORD*
指向每个面三个 DWORD 数组的指针,该数组指定优化网格中每个人脸的三个邻居。 如果边缘没有相邻面,则值0xffffffff。
-
pFaceRemap [in, out]
-
类型: DWORD*
一个 DWORD 数组,每个人脸一个,用于标识与优化网格中每个人脸对应的原始网格面。 如果为此参数提供的值为 NULL,则不返回人脸重新映射数据。
-
ppVertexRemap [out]
-
类型: LPD3DXBUFFER*
指向 ID3DXBuffer 接口的指针的地址,该接口包含指定新顶点如何映射到旧顶点的每个顶点的 DWORD。 如果需要根据新的顶点映射更改外部数据,此重新映射非常有用。
-
ppOptMesh [out]
-
类型: LPD3DXMESH*
指向 ID3DXMesh 接口(表示优化网格)的指针的地址。
返回值
类型: HRESULT
如果该方法成功,则返回值D3D_OK。 如果方法失败,则返回值可以是下列值之一:D3DERR_INVALIDCALL、E_OUTOFMEMORY。
备注
此方法生成新的网格。 在运行 Optimize 之前,应用程序必须通过调用 ID3DXBaseMesh::GenerateAdjacency 生成相邻缓冲区。 相邻缓冲区包含相邻数据,例如边缘列表和彼此相邻的面。
此方法与 ID3DXBaseMesh::CloneMesh 方法非常相似,只不过它可以在生成网格的新克隆时执行优化。 输出网格继承输入网格的所有创建参数。
要求
要求 | 值 |
---|---|
标头 |
|
库 |
|
另请参阅