次の方法で共有


D3DXSimplifyMesh

指定された重みを使用して、MinValue にできるだけ近い単純化メッシュを生成します。

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

パラメータ

  • pMesh
    ソース メッシュを表す ID3DXMesh インターフェイスへのポインターです。
  • pAdjacency
    面ごとの 3 つの DWORD 値を格納する配列へのポインターです。この配列によって、単純化するメッシュの各面に隣接した 3 つの面を定義します。
  • pVertexAttributeWeights
    各頂点コンポーネントの加重が含まれている D3DXATTRIBUTEWEIGHTS 構造体へのポインターです。このパラメーターが NULL の場合、デフォルトの構造体が使用されます。「解説」を参照してください。
  • pVertexWeights
    頂点加重の配列へのポインターです。このパラメーターが NULL の場合、すべての頂点の加重は 1.0 になります。
  • MinValue
    Options パラメーターに設定したフラグに対応する頂点または面の数です。このパラメーターの値によって元のメッシュを単純化します。
  • Options
    メッシュの単純化オプションです。D3DXMESHSIMP のいずれかのフラグを指定できます。
  • ppMesh
    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}; 

通常のアプリケーションでは、このデフォルトの構造体を使用してください。この場合、ジオメトリと法線の調整のみが行われます。他のメンバーのフィールドを調整する必要があるのは特別な場合のみです。

要件

ヘッダー: D3DX9Mesh.h 宣言

ライブラリ: D3dx9.lib 内容