Microsoft DirectX 8.0 (C++)

D3DXGeneratePMesh

プログレッシブ メッシュを生成する。

HRESULT D3DXGeneratePMesh(
  LPD3DXMESH pMesh,
  CONST DWORD* pAdjacency,
  CONST LPD3DXATTRIBUTEWEIGHTS pVertexAttributeWeights,
  CONST FLOAT* pVertexWeights,
  DWORD MinValue,
  DWORD Options,
  LPD3DXPMESH* ppPMesh
);

パラメータ

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 パラメータに指定した数の頂点でメッシュが単純化される。
ppPMesh
[out] 作成されたプログレッシブ メッシュを表す、ID3DXPMesh インターフェイスへのポインタのアドレス。

戻り値

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

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

D3DXERR_CANNOTATTRSORT
D3DERR_INVALIDCALL
E_OUTOFMEMORY

注意

この関数は、LOD (Level of Detail) を現在の値から 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 を使用。