Platform SDK: DirectX

Direct3DVertexBuffer7.Lock

Direct3DVertexBuffer7.Lock メソッドは、頂点バッファをロックする。

object.Lock(flags As CONST_DDLOCKFLAGS)

パラメータ

object
Direct3DVertexBuffer7 オブジェクトを表すオブジェクト式。
flags
頂点バッファ メモリのロック方法を示す、CONST_DDLOCKFLAGS 列挙の次の定数の 1 つ。
DDLOCK_NOSYSLOCK
可能であれば、Win16Mutex (Win16Lock とも言われる) は用いない。
DDLOCK_READONLY
ロックされたメモリは読み出し専用であることを示す。
DDLOCK_WAIT
ロックが即座にできない場合、メソッドはロックできるまで、あるいは、別のエラーが生じるまでリトライする。
DDLOCK_WRITEONLY
ロックされたメモリは書き込み専用であることを示す。
DDLOCK_DISCARDCONTENTS
Direct3D 頂点バッファのロックのみで使用する。ロック中に頂点バッファの内容が保証されないことを示す。これにより、Direct3D またはドライバが、別のメモリ領域を頂点バッファとして供給できる。頂点バッファの内容をクリアしたい場合や、新しいデータを格納する場合に有効である。
DDLOCK_NOOVERWRITE
Direct3D 頂点バッファのみで使用する。ロック中に、フレーム (またはこのフラグのない最後のロック) の始めが修正されてから、頂点バッファの DrawPrimitive 呼び出しで頂点が参照されていないことを示す。頂点バッファにデータを追加するだけの場合に有効である。

エラー コード

メソッドが失敗するとエラーが発生し、Err.Number に次のいずれかのエラー コードが設定される。

D3DERR_VERTEXBUFFEROPTIMIZED
DDERR_INVALIDPARAMS
DDERR_OUTOFMEMORY
DDERR_SURFACEBUSY
DDERR_SURFACELOST

トラッピング エラーについては、「Visual Basic エラー トラッピング」を参照すること。

注意

頂点バッファがロックされているときに、バッファ内のデータを操作するには、Direct3DVertexBuffer7.GetVertices および Direct3DVertexBuffer7.SetVertices メソッドを使用する。頂点バッファのロック後、対応する Direct3DVertexBuffer7.Unlock を呼び出すまで、このメモリにアクセスすることができる。

頂点バッファがロックされているときはレンダリングすることはできない。ロックされた頂点バッファを使って Direct3DDevice7.DrawIndexedPrimitiveVB または Direct3DDevice7.DrawPrimitiveVB メソッドを呼び出そうとすると失敗し、D3DERR_VERTEXBUFFERLOCKED を返す。

このメソッドは、Direct3DVertexBuffer7.Unlock メソッドを呼び出すまで、Win16Mutex をホールドさせることがしばしばある。GUI デバッガは、Win16Mutex がホールドされている間は動作しない。

参照

Direct3DVertexBuffer7.Unlock頂点バッファの内容へのアクセス