次の方法で共有


ID3DXMesh::Optimize メソッド

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

構文

HRESULT Optimize(
  [in]            DWORD        Flags,
  [in]      const DWORD        *pAdjacencyIn,
  [in, out]       DWORD        *pAdjacencyOut,
  [in, out]       DWORD        *pFaceRemap,
  [out]           LPD3DXBUFFER *ppVertexRemap,
  [out]           LPD3DXMESH   *ppOptMesh
);

パラメーター

Flags [in]

種類: DWORD

実行する最適化の種類を指定します。 このパラメーターは、D3DXMESHOPT と D3DXMESH (D3DXMESH_32BIT、D3DXMESH_IB_WRITEONLY、およびD3DXMESH_WRITEONLYを除く) からの 1 つ以上のフラグの組み合わせに設定できます。

pAdjacencyIn [in]

型: const DWORD*

ソース メッシュ内の各面の 3 つのネイバーを指定する、1 面あたり 3 つの DWORD の配列へのポインター。 エッジに隣接する面がない場合、値は0xffffffff。 「解説」を参照してください。

pAdjacencyOut [in, out]

種類: DWORD*

最適化されたメッシュ内の各面の 3 つのネイバーを指定する、1 面あたり 3 つの DWORD の配列へのポインター。 エッジに隣接する面がない場合、値は0xffffffff。

pFaceRemap [in, out]

種類: DWORD*

最適化されたメッシュ内の各面に対応する元のメッシュ面を識別する DWORD の配列 (顔ごとに 1 つ)。 この引数に指定された値が NULL の場合、face remap データは返されません。

ppVertexRemap [out]

種類: LPD3DXBUFFER*

ID3DXBuffer インターフェイスへのポインターのアドレス。新しい頂点が古い頂点にどのようにマップされるかを指定する各頂点の DWORD が含まれます。 この再マップは、新しい頂点マッピングに基づいて外部データを変更する必要がある場合に便利です。

ppOptMesh [out]

種類: LPD3DXMESH*

最適化されたメッシュを表す ID3DXMesh インターフェイスへのポインターのアドレス。

戻り値

種類: HRESULT

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

注釈

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

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

要件

要件
ヘッダー
D3DX9Mesh.h
ライブラリ
D3dx9.lib

こちらもご覧ください

Id3dxmesh

ID3DXMesh::OptimizeInplace