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];

規格需求

需求
標頭
D3DX9Mesh.h
程式庫
D3dx9.lib

另請參閱

網格函數