共用方式為


ID3DXMesh::OptimizeInplace 方法

產生具有重新排序臉部和頂點的網格,以優化繪圖效能。 這個方法會重新排序現有的網格。

語法

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

參數

旗標 [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