D3DXSplitMesh 函数
将网格拆分为小于指定大小的网格。
语法
void D3DXSplitMesh(
_In_ LPD3DXMESH pMeshIn,
_In_ const DWORD *pAdjacencyIn,
_In_ const DWORD MaxSize,
_In_ const DWORD Options,
_Out_ DWORD *pMeshesOut,
_Out_ LPD3DXBUFFER *ppMeshArrayOut,
_Out_ LPD3DXBUFFER *ppAdjacencyArrayOut,
_Out_ LPD3DXBUFFER *ppFaceRemapArrayOut,
_Out_ LPD3DXBUFFER *ppVertRemapArrayOut
);
参数
-
pMeshIn [in]
-
类型: LPD3DXMESH
指向 ID3DXMesh 接口的指针,表示源网格。
-
pAdjacencyIn [in]
-
类型: const DWORD*
指向每个人脸三个 DWORD 的数组的指针,该数组指定要简化的网格中每个人脸的三个邻居。
-
MaxSize [in]
-
类型: const DWORD
结果网格中顶点的最大数目。
-
选项 [in]
-
类型: const DWORD
新网格的选项标志。
-
pMeshesOut [out]
-
类型: DWORD*
返回的网格数。
-
ppMeshArrayOut [out]
-
类型: LPD3DXBUFFER*
包含新网格的 ID3DXMesh 接口数组的缓冲区。 对于拆分为 n 个网格的源网格, ppMeshArrayOut 是 n ID3DXMesh 指针的数组。
-
ppAdjacencyArrayOut [out]
-
类型: LPD3DXBUFFER*
包含新网格 (DWORD) 相邻数组的缓冲区。 请参阅 ID3DXBuffer。 此参数是可选的。
-
ppFaceRemapArrayOut [out]
-
类型: LPD3DXBUFFER*
包含人脸重映射数组的缓冲区 (新网格的 DWORD) 。 请参阅 ID3DXBuffer。 此参数是可选的。
-
ppVertRemapArrayOut [out]
-
类型: LPD3DXBUFFER*
包含新网格的顶点重映射数组的缓冲区。 请参阅 ID3DXBuffer。 此参数可选。
返回值
如果函数成功,则返回值D3D_OK。 如果函数失败,则返回值可以是以下值之一:D3DERR_INVALIDCALL、D3DXERR_INVALIDDATA E_OUTOFMEMORY。
备注
此函数的常见用途是将具有 32 位索引的网格 (超过 65535 个顶点) 拆分为多个网格,其中每个网格都有 16 位索引。
相邻、顶点重映射和人脸重映射数组是 DWORD,其中每个数组包含 n 个 DWORD 指针,后跟指针引用的 DWORD 数据。 例如,若要获取网格 2 中人脸 3 的人脸重新映射信息,可以使用以下代码,假设人脸重新映射数据是在名为 ppFaceRemapArrayOut 的变量中返回的。
const DWORD **face_remaps =
static_cast<DWORD **>(ppFaceRemapArrayOut->GetBufferPointer());
const DWORD remap = face_remaps[2][3];
要求
要求 | 值 |
---|---|
标头 |
|
库 |
|
另请参阅