次の方法で共有


ID3DXMesh::Optimize

面と頂点の順序を変更したメッシュを新しく生成して、描画パフォーマンスを最適化します。

HRESULT 
Optimize(
  DWORD Flags,
  CONST DWORD * pAdjacencyIn,
  DWORD * pAdjacencyOut,
  DWORD * pFaceRemap,
  LPD3DXBUFFER * ppVertexRemap,
  LPD3DXMESH * ppOptMesh
);

パラメータ

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

戻り値

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

解説 

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

このメソッドは、ID3DXBaseMesh::CloneMesh メソッドとよく似ていますが、メッシュの新しいクローンを生成しているときに最適化を実行できるという点で異なります。出力メッシュは、入力メッシュのすべての作成パラメーターを継承します。

要件

ヘッダー: D3DX9Mesh.h 宣言

ライブラリ: D3dx9.lib 内容

関連項目

ID3DXMesh::OptimizeInplace