Platform SDK: DirectX

IDirect3DVertexBuffer7::Lock

IDirect3DVertexBuffer7::Lock メソッドは、頂点バッファをロックして、頂点バッファ メモリへのポインタを取得する。

HRESULT Lock(
  DWORD   dwFlags,  
  LPVOID* lplpData, 
  LPDWORD lpdwSize  
); 

パラメータ

dwFlags
頂点バッファのロックの方法を示すフラグ。
DDLOCK_EVENT
現在は実装されていない。
DDLOCK_NOSYSLOCK
可能であれば、Win16Mutex (Win16Lock とも言われる) は用いない。
DDLOCK_READONLY
ロックされたメモリは読み出し専用であることを示す。
DDLOCK_SURFACEMEMORYPTR
頂点バッファへの有効なメモリ ポインタが返されることを示す。これはデフォルトである。
DDLOCK_WAIT
ロックが即座にできない場合、メソッドはロックできるまで、または、別のエラーが生じるまでリトライする。
DDLOCK_WRITEONLY
ロックされたメモリは書き込み専用であることを示す。
DDLOCK_DISCARDCONTENTS
DirectX 7.0 の新機能。Direct3D 頂点バッファのロックでのみ使用。ロック中に頂点バッファの内容が保証されないことを示す。このフラグを使用すると、Direct3D またはドライバが代替メモリ領域を頂点バッファとして提供するようになる。このフラグは、頂点バッファの内容をクリアして新しいデータを格納する場合に便利である。
DDLOCK_NOOVERWRITE
DirectX 7.0 の新機能。Direct3D 頂点バッファのロックでのみ使用。ロック中に最初のフレーム (このフラグが指定されていない場合は最後のロック) が修正されているため、頂点バッファの DrawPrimitive 呼び出しで参照された頂点が存在しないことを示す。このフラグは、頂点バッファにデータのみ追加する場合に便利である。
lplpData
呼び出しが成功したときに、頂点バッファ メモリのアドレスを格納する変数のアドレス。
lpdwSize
lplpData の頂点バッファ メモリのサイズを格納する変数のアドレス。バッファ サイズが不要であれば NULL を設定する。

戻り値

成功すれば D3D_OK を返す。

失敗すれば、次のいずれかの値を返す。

D3DERR_VERTEXBUFFEROPTIMIZED
DDERR_INVALIDPARAMS
DDERR_OUTOFMEMORY
DDERR_SURFACEBUSY
DDERR_SURFACELOST

注意

頂点バッファをロックした後は、IDirect3DVertexBuffer7::Unlock を呼び出すまでこのメモリにアクセスできる。

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

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

動作環境

  Windows NT/2000 :Windows 2000 が必要。
  Windows 95/98 : Windows 95 以降が必要。Windows 95 用に再配布可能な形で使用可能。
  バージョン :DirectX 7.0 が必要。
  ヘッダー : d3d.h で宣言。

参照

IDirect3DVertexBuffer7::Unlock頂点バッファの内容へのアクセス