Microsoft DirectX 8.0 (C++)

D3DXSimplifyMesh

メッシュを単純化する。

HRESULT D3DXSimplifyMesh(
  LPD3DXMESH pMesh,
  CONST DWORD* pAdjacency,
  CONST LPD3DXATTRIBUTEWEIGHTS pVertexAttributeWeights,
  CONST FLOAT* pVertexWeights,
  DWORD MinValue,
  DWORD* Options,
  LPD3DXMESH* ppMesh
);

パラメータ

pMesh
[in] ソース メッシュを表す ID3DXMesh インターフェイスへのポインタ。
pAdjacency
[in] 単純化するメッシュに含まれる各面の 3 つの隣接面を指定する、1 面あたりの 3 つの DWORD の配列へのポインタ。
pVertexAttributeWeights
[in] 各頂点の成分に対する加重を格納する D3DXATTRIBUTEWEIGHTS 構造体へのポインタ。このパラメータを NULL に設定すると、デフォルトの構造体が使用される。「注意」を参照すること。
pVertexWeights
[in] 頂点加重の配列へのポインタ。このパラメータを NULL に設定すると、すべての頂点加重は 1.0 に設定される。
MinValue
[in] Options パラメータに設定されているフラグに応じた頂点または面の数。これによって、ソース メッシュが単純化される。
Options
[in] メッシュに対して単純化オプションを指定する。次のいずれかのフラグを設定できる。
D3DXMESHSIMP_FACE
MinValue パラメータに指定した数の面でメッシュが単純化される。
D3DXMESHSIMP_VERTEX
MinValue パラメータに指定した数の頂点でメッシュが単純化される。
ppMesh
[out] 単純化メッシュを表す、ID3DXMesh インターフェイスへのポインタのアドレス。

戻り値

成功した場合は 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};

通常のアプリケーションでは、このデフォルトの構造体を使用すべきである。理由は、この構造体がジオメトリと法線の調整のみを目的としているからである。その他のメンバ フィールドを修正する必要があるのは、特別な場合のみである。

動作環境

  ヘッダー : D3dx8mesh.h で宣言。
  インポート ライブラリ : D3dx8.lib を使用。