Microsoft DirectX 8.0 (Visual Basic)

D3DX8.SimplifyMesh

メッシュを単純化する。

object.SimplifyMesh( _ 
    Mesh As D3DXMesh, _ 
    Adjacency As Any, _ 
    VertexAttributeWeights As Any, _ 
    VertexWeights As Any, _ 
    MinValue As Long, _ 
    Options As Long) As D3DXMesh

指定項目

object
D3DX8 オブジェクトを表すオブジェクト式。
Mesh
ソース メッシュを表す D3DXMesh オブジェクト。
Adjacency
単純化するメッシュに含まれる各面の 3 つの隣接面を指定する、1 面あたりの 3 つの Long 値の配列の最初の要素。
VertexAttributeWeights
各頂点の成分に対する加重を格納する D3DXATTRIBUTEWEIGHTS 型。このパラメータを ByVal 0 に設定すると、デフォルトの型が使用される。「注意」を参照すること。
VertexWeights
頂点加重の配列の最初の要素。このパラメータを ByVal 0 に設定すると、すべての頂点加重は 1.0 に設定される。
MinValue
Options パラメータに設定されているフラグに応じた頂点または面の数。これによって、ソース メッシュが単純化される。
Options
メッシュに対して単純化オプションを指定する。CONST_D3DXMESHSIMP 列挙で定義されるフラグのうちの 1 つを設定できる。

戻り値

返された単純化メッシュを表す、D3DXMesh オブジェクト。

エラー コード

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

D3DERR_INVALIDCALL
E_OUTOFMEMORY

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

注意

このメソッドは、MinValue の頂点または面を持つメッシュを生成する。

単純化プロセスによってメッシュを MinValue まで減らすことができない場合でも呼び出しは継続される。これは、MinValue が絶対的な最小値ではなく、希望の最小値であるからである。

VertexAttributeWeights を ByVal 0 に設定した場合、値はデフォルトの D3DXATTRIBUTEWEIGHTS 型に従って割り当てられる。

Dim AttribruteWeights As D3DXATTRIBUTEWEIGHTS
With _
.position = 1
.Boundary = 1
.Normal = 1
.diffuse = 0
.specular = 0
.Tex(7) = 0
End With

大部分のアプリケーションでは、このデフォルトの型を使用する。デフォルトではジオメトリと法線の調整のみが考慮される。その他のメンバ フィールドを修正する必要があるのは、特別な場合のみである。

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

Dim Mesh As D3DXMesh
Dim D3DXbAdjacency As D3DXBuffer
Dim VAttWeights As Any
Dim VWeights As Any
Dim MinV As Long
Dim Opts As Long

' このコードでは、すべての引数が
' 正しく初期化されていると仮定している。
Call D3DX8.SimplifyMesh(Mesh, ByVal D3DXbAdjacency.GetBufferPointer, VAttWeights, Vweights, MinV, Opts )