Microsoft DirectX 8.0 (C++) |
プログレッシブ メッシュを生成する。
HRESULT D3DXGeneratePMesh( LPD3DXMESH pMesh, CONST DWORD* pAdjacency, CONST LPD3DXATTRIBUTEWEIGHTS pVertexAttributeWeights, CONST FLOAT* pVertexWeights, DWORD MinValue, DWORD Options, LPD3DXPMESH* ppPMesh );
成功した場合は 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 を使用。