Microsoft DirectX 8.0 (C++)

IDirect3DSurface8::LockRect

サーフェス上の矩形をロックする。

HRESULT LockRect(
  D3DLOCKED_RECT* pLockedRect,
  CONST RECT* pRect,
  DWORD Flags
);

パラメータ

pLockedRect
[out] ロック済みの領域を記述する D3DLOCKED_RECT 構造体へのポインタ。
pRect
[in] ロックする矩形へのポインタ。RECT 構造体へのポインタによって指定される。このパラメータに NULL を指定すると、サーフェス全体を覆うようにダーティー領域が拡大する。
Flags
[in] 実行するロックのタイプを記述する、0 個以上のロッキング フラグの組み合わせ。
D3DLOCK_NO_DIRTY_UPDATE
デフォルトでは、リソースのロックはダーティー領域をそのリソースに追加する。このフラグは、リソースのダーティー状態への変更を防ぐ。ロック処理の間に変更される実際の領域群についての追加情報をアプリーションが持つ場合は、アプリケーションでこのフラグを使用しなければならない。
D3DLOCK_NOSYSLOCK
ビデオ メモリ ロックのデフォルトの動作は、システムのクリティカル セクションを確保することで、ロック中にディスプレイ モードの変更が行われないことを保証する。このフラグは、システムワイドなクリティカル セクションがロックの間保持されないようにする。

ロック処理は若干負荷が高くなるが、マウス カーソルの移動など、システムでほかの処理を実行することが可能になる。このフラグは、ソフトウェア レンダリングのバックバッファのロックのように、ロックが長時間に及び、システムの応答性に悪影響を与えてしまうようなロックに対して有効である。

D3DLOCK_READONLY
アプリケーションはバッファに書き込みを行わない。これによって、ネイティブでないフォーマットで格納されたリソースが、アンロック時に再圧縮手順を保存できる。

戻り値

成功した場合は、D3D_OK を返す。

失敗した場合は、D3DERR_INVALIDCALL を返す。

注意

深度ステンシル サーフェスのロック可能なフォーマットは、D3DFMT_D16_LOCKABLE だけである。

マルチサンプル バック バッファはロックできない。

パフォーマンスの理由によって、ダーティーな範囲はテクスチャのレベルゼロに対して記録されるのみである。D3DLOCK_NO_DIRTY_UPDATE または D3DLOCK_READONLY なしで LockRectLockBox が呼び出されたとき、ダーティーな範囲は自動的に記録される。また CopyRects 呼び出しの宛先サーフェイスはダーティーとしてマークされる。詳細については、「IDirect3DDevice8::UpdateTexture」を参照すること。

動作環境

  ヘッダー : d3d8.h で宣言。
  インポート ライブラリ : D3d8.lib を使用。

参照

IDirect3DSurface8::UnlockRect