次の方法で共有


ID3DXMesh::OptimizeInplace メソッド

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

構文

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

パラメーター

Flags [in]

種類: DWORD

実行する最適化の種類を指定する、1 つ以上の D3DXMESHOPT フラグの組み合わせ。

pAdjacencyIn [in]

型: const DWORD*

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

pAdjacencyOut [out]

種類: DWORD*

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

pFaceRemap [out]

種類: DWORD*

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

ppVertexRemap [out]

種類: LPD3DXBUFFER*

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

戻り値

種類: HRESULT

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

注釈

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

注意

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

 

要件

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

こちらもご覧ください

Id3dxmesh

ID3DXMesh::Optimize