Microsoft DirectX 8.0 (Visual Basic)

D3DXMesh.OptimizeInplace

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

object.OptimizeInplace( _ 
    Flags As Long, _ 
    AdjacencyIn As Any, _ 
    AdjacencyOut As Any, _ 
    FaceRemap As Any, _ 
    VertexRemapOut As D3DXBuffer)

指定項目

object
D3DXMesh オブジェクトを表すオブジェクト式。
Flags
CONST_D3DXMESHOPT 列挙によって定義される 1 つ以上のフラグの組み合わせ。実行する最適化の種類を指定する。

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

AdjacencyIn
ソース メッシュに含まれる各面の 3 つの隣接面を指定する、1 面あたりの 3 つの Long 値の配列の最初の要素。
AdjacencyOut
最適化されたメッシュの面隣接性配列の転送先バッファを表す、配列の最初の要素。面隣接性は、配列の配列として格納される。最も内側の配列は、隣接する三角形の 3 つのインデックスで、外側の配列は、メッシュ内の三角形ごとの面隣接性の 1 セットである。
FaceRemap
各面の新規インデックスを格納する転送先バッファを表す、配列の最初の要素。
VertexRemapOut
各頂点の新規インデックスを格納する、D3DXBuffer オブジェクト。

エラー コード

失敗した場合はエラーが発生し、Err.Number に次のいずれかの値が設定される。

D3DERR_INVALIDCALL
D3DXERR_CANNOTATTRSORT
E_OUTOFMEMORY

エラー トラッピングの詳細については、Microsoft® Visual Basic® の「エラー処理」を参照すること。

注意

出力メッシュは、入力メッシュのすべての作成パラメータを継承する。

次のサンプル コードは、D3DXBuffer オブジェクトを使用して隣接性情報を渡す方法を示している。

Dim Opts As Long
Dim D3DXbAdjacencyIn As D3DXBuffer
Dim D3DXbAdjacencyOut As Any
Dim FaceRemap As Any
Dim FaceRemap As D3DXBuffer

' このコードでは、すべての引数が
' 正しく初期化されていると仮定している。
Call D3DX8.OptimizeInPlace( Opts, ByVal D3DXbAdjacencyIn.GetBufferPointer, D3DXbAdjacencyOut, _ 
                                            FaceRemap, FaceRemap )

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