Microsoft DirectX 8.0 (C++)

D3DXCreateSPMesh

単純化メッシュを作成する。

HRESULT D3DXCreateSPMesh(
  LPD3DXMESH pMesh,
  CONST DWORD* pAdjacency,
  CONST LPD3DXATTRIBUTEWEIGHTS pVertexAttributeWeights,
  CONST FLOAT* pVertexWeights,
  LPD3DXSPMESH* ppSMesh
);

パラメータ

pMesh
[in] 単純化するメッシュを表す、ID3DXMesh インターフェイスへのポインタ。
pAdjacency
[in] 作成された単純化メッシュに含まれる各面の 3 つの隣接面を指定する、1 面あたりの 3 つの DWORD の配列へのポインタ。
pVertexAttributeWeights
[in] 各頂点の成分に対する加重を格納する D3DXATTRIBUTEWEIGHTS 構造体へのポインタ。このパラメータを NULL に設定すると、デフォルトの構造体が使用される。「注意」を参照すること。
pVertexWeights
[in] 頂点加重の配列へのポインタ。このパラメータを NULL に設定すると、すべての頂点加重は 1.0 に設定される。指定された頂点の頂点加重が大きいほど、単純化しにくいことに注意する。
ppSMesh
[out] 作成された単純化メッシュを表す、ID3DXSPMesh インターフェイスへのポインタのアドレス。

戻り値

成功した場合は D3D_OK を返す。

失敗した場合は、次のいずれかの値を返す。

D3DXERR_CANNOTATTRSORT
D3DERR_INVALIDCALL
E_OUTOFMEMORY

注意

単純化メッシュは、メッシュを単純化して、三角形と面の数を減らすために使用する。

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 を使用。