次の方法で共有


ID3DXMesh::OptimizeInplace

面と頂点の順番を変更したメッシュを生成して、描画パフォーマンスを最適化します。このメソッドは、既存のメッシュの順序を変更します。

HRESULT 
OptimizeInplace(
  DWORD Flags,
  CONST DWORD * pAdjacencyIn,
  DWORD * pAdjacencyOut,
  DWORD * pFaceRemap,
  LPD3DXBUFFER * ppVertexRemap
);

パラメータ

  • Flags
    実行する最適化のタイプを指定する、1 個以上の D3DXMESHOPT フラグの組み合わせです。
  • pAdjacencyIn
    3 つの DWORD 値を格納する配列へのポインターです。この配列によって、元のメッシュの各面に隣接した 3 つの面を定義します。エッジが隣接面を持たない場合の値は 0xffffffff です。
  • pAdjacencyOut
    3 つの DWORD 値を格納する配列へのポインターです。この配列によって、最適化するメッシュの各面に隣接した 3 つの面を定義します。エッジが隣接面を持たない場合の値は 0xffffffff です。この引数の値が NULL の場合、隣接性データは返されません。
  • pFaceRemap
    各面に 1 つの DWORD の配列です。この配列は、最適化するメッシュの各面に対応する元のメッシュ面を識別します。この引数の値が NULL の場合、面の再マップ データは返されません。
  • ppVertexRemap
    新しい頂点を古い頂点にマッピングする方法を指定する各頂点の DWORD を保持する ID3DXBuffer インターフェイスへのポインターのアドレスです。この再マップは、新しい頂点マッピングに基づいて外部データを変更する必要がある場合に役立ちます。この引数の値が NULL の場合、頂点の再マップ データは返されません。

戻り値

メソッドが成功した場合は、D3D_OK を返します。失敗した場合は、次の戻り値のいずれかを返します。D3DERR_INVALIDCALL、D3DXERR_CANNOTATTRSORT、E_OUTOFMEMORY のいずれかです。

解説 

ID3DXMesh::OptimizeInplace を実行する前に、アプリケーションで ID3DXBaseMesh::GenerateAdjacency を呼び出して隣接性バッファーを生成する必要があります。隣接性バッファーには、互いに隣接するエッジや面の一覧などの隣接性データが格納されます。

    このメソッドは、メッシュが頂点バッファーを他のメッシュと共有している場合、Flags に D3DXMESHOPT_IGNOREVERTS を設定していないと、失敗します。

要件

ヘッダー: D3DX9Mesh.h 宣言

ライブラリ: D3dx9.lib 内容

関連項目

ID3DXMesh::Optimize