共用方式為


D3DXSimplifyMesh 函式

使用盡可能接近指定 MinValue 的提供權數來產生簡化的網格。

語法

HRESULT D3DXSimplifyMesh(
  _In_        LPD3DXMESH           pMesh,
  _In_  const DWORD                *pAdjacency,
  _In_  const D3DXATTRIBUTEWEIGHTS *pVertexAttributeWeights,
  _In_  const FLOAT                *pVertexWeights,
  _In_        DWORD                MinValue,
  _In_        DWORD                Options,
  _Out_       LPD3DXMESH           *ppMesh
);

參數

pMesh [in]

類型: LPD3DXMESH

ID3DXMesh介面的指標,代表來源網格。

pAdjacency [in]

類型:const DWORD*

每個臉部三個 DWORD 陣列的指標,指定要簡化網格中每個臉部的三個芳鄰。

pVertexAttributeWeights [in]

類型:const D3DXATTRIBUTEWEIGHTS*

D3DXATTRIBUTEWEIGHTS結構的指標,其中包含每個頂點元件的權數。 如果此參數設定為 Null,則會使用預設結構。 請參閱<備註>。

pVertexWeights [in]

類型:const FLOAT*

頂點加權陣列的指標。 如果此參數設定為 Null,則所有頂點加權都會設定為 1.0。

MinValue [in]

類型: DWORD

頂點或臉部數目,視 Options 參數中設定的旗標而定,用來簡化來源網格。

選項 [in]

類型: DWORD

指定網格的簡化選項。 您可以設定 D3DXMESHSIMP 中的其中一個旗標。

ppMesh [out]

類型: LPD3DXMESH*

ID3DXMesh介面指標的位址,代表傳回的簡化網格。

傳回值

類型: HRESULT

如果函式成功,傳回值會D3D_OK。 如果函式失敗,傳回值可以是下列其中一項:D3DERR_INVALIDCALL、D3DXERR_INVALIDDATA E_OUTOFMEMORY。

備註

此函式會產生具有 MinValue 頂點或臉部的網格。

如果簡化程式無法將網格縮減為 MinValue,呼叫仍會成功,因為 MinValue 是所需的最小值,而不是絕對最小值。

如果 pVertexAttributeWeights 設定為 Null,則會將下列值指派給預設 的 D3DXATTRIBUTEWEIGHTS 結構。

D3DXATTRIBUTEWEIGHTS AttributeWeights;
    
AttributeWeights.Position  = 1.0;
AttributeWeights.Boundary =  1.0;
AttributeWeights.Normal   =  1.0;
AttributeWeights.Diffuse  =  0.0;
AttributeWeights.Specular =  0.0;
AttributeWeights.Tex[8]   =  {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};

此預設結構是大部分應用程式應該使用的內容,因為它只會考慮幾何和一般調整。 只有在特殊情況下,才需要修改其他成員欄位。

規格需求

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

另請參閱

網格函數