Microsoft DirectX 8.0 (C++)

ID3DXMesh::OptimizeInplace

メッシュの面および頂点の順番変更を制御し、パフォーマンスを最適化する。

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

パラメータ

Flags
[in] 実行する最適化の種類を指定する、1 つ以上のフラグの組み合わせ。次のフラグが定義されている。
D3DXMESHOPT_ATTRSORT
属性バンドル ステートの変更を少なくし、ID3DXBaseMesh::DrawSubset のパフォーマンスを強化するため、面の順番を変更して最適化を行う。
D3DXMESHOPT_COMPACT
面の順番を変更し、使用されていない頂点と綿を削除する。
D3DXMESHOPT_IGNOREVERTS
面のみを最適化し、頂点は最適化しない。
D3DXMESHOPT_STRIPREORDER
面の順番を変更し、隣接する三角形の長さを最大にする。
D3DXMESHOPT_VERTEXCACHE
面の順番を変更し、頂点キャッシュのキャッシュ ヒット率を向上させる。

最適化フラグの D3DXMESHOPT_STRIPREORDER および D3DXMESHOPT_VERTEXCACHE はそれぞれ相互に排他的である。

pAdjacencyIn
[in] ソース メッシュに含まれる各面の 3 つの隣接面を指定する、1 面あたりの 3 つの DWORD の配列へのポインタ。
pAdjacencyOut
[out] 最適化されたメッシュの面隣接性配列に使用する転送先バッファへのポインタ。面隣接性は、配列の配列として格納される。最も内側の配列は、隣接する三角形の 3 つのインデックスで、外側の配列は、メッシュ内の三角形ごとの面隣接性の 1 セットである。
pFaceRemap
[out] 各面の新しいインデックスを格納している転送先バッファへのポインタ。
ppVertexRemap
[out] 各頂点の新しいインデックスを格納する、ID3DXBuffer インターフェイスへのポインタのアドレス。

戻り値

成功した場合は、D3D_OK を返す。

失敗した場合は、次のいずれかの値を返す。

D3DERR_INVALIDCALL
D3DXERR_CANNOTATTRSORT
E_OUTOFMEMORY

  このメソッドは、メッシュが頂点バッファをほかのメッシュと共有している場合、失敗する。ただし、Flags パラメータに D3DXMESHOPT_IGNOREVERTS フラグが設定されている場合を除く。

動作環境

  ヘッダー : D3dx8mesh.h で宣言。
  インポート ライブラリ : D3dx8.lib を使用。