次の方法で共有


IDirect3DIndexBuffer9::Lock

インデックス データのある一定範囲をロックし、そのインデックス バッファー メモリーへのポインターを取得します。

HRESULT 
Lock(
  UINT OffsetToLock,
  UINT SizeToLock,
  VOID ** ppbData,
  DWORD Flags
);

パラメータ

  • OffsetToLock
    ロックするインデックス データへのオフセット (バイト単位)。SizeToLock と OffsetToLock の両方のパラメーターに 0 を設定すると、インデックス バッファー全体がロックされます。
  • SizeToLock
    ロックするインデックス データのサイズ (バイト単位)。SizeToLock と OffsetToLock の両方のパラメーターに 0 を設定すると、インデックス バッファー全体がロックされます。
  • ppbData
    取得するインデックス データを含むメモリー バッファーへの VOID* ポインターです。
  • Flags
    実行するロックのタイプを指定する、0 個以上のロッキング フラグの組み合わせ。このメソッドに使用できるフラグを次に示します。
    • D3DLOCK_DISCARD
    • D3DLOCK_NO_DIRTY_UPDATE
    • D3DLOCK_NOSYSLOCK
    • D3DLOCK_READONLY
    • D3DLOCK_NOOVERWRITE フラグについては、「D3DLOCK」を参照してください。

戻り値

メソッドが成功した場合は、D3D_OK を返します。失敗した場合は、D3DERR_INVALIDCALL を返します。

解説 

一般的なルールとして、複数のフレームにわたってロックを保持しないようにします。インデックス バッファーを操作するときは、複数のロック呼び出しを実行できます。ただし、ロック呼び出しの数とロック解除呼び出しの数を一致させる必要があります。現在設定されているインデックス バッファーでロック カウントが残っている場合に IDirect3DDevice9::DrawIndexedPrimitive を呼び出すと、失敗します。

D3DLOCK_DISCARD フラグおよび D3DLOCK_NOOVERWRITE フラグは、D3DUSAGE_DYNAMIC を使用して作成されたバッファー上でのみ有効です。

D3DLOCK_DISCARD または D3DLOCK_NOOVERWRITE の使用方法については、「プログラミングのヒント (Direct3D 9)」を参照してください。

要件

ヘッダー: D3D9.h 宣言

ライブラリ: D3D9.lib 内容

関連項目

IDirect3DIndexBuffer9::Unlock, インデックス バッファー (Direct3D 9)