次の方法で共有


IDirect3DSurface9::LockRect

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

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

パラメータ

  • pLockedRect
    ロックされた領域を表す D3DLOCKED_RECT 構造体へのポインター。
  • pRect
    ロックする矩形へのポインター。RECT 構造体へのポインターにより指定されます。このパラメーターに NULL を指定すると、サーフェス全体を覆うようにダーティ領域が拡大します。
  • Flags
    実行するロックのタイプを指定する、0 個以上のロッキング フラグの組み合わせ。このメソッドに使用できるフラグを次に示します。
    • D3DLOCK_DISCARD
    • D3DLOCK_DONOTWAIT
    • D3DLOCK_NO_DIRTY_UPDATE
    • D3DLOCK_NOSYSLOCK
    • D3DLOCK_READONLY D3DLOCK_DISCARD を使用するときに対象を指定することはできません。フラグについては、「D3DLOCK」を参照してください。

戻り値

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

失敗した場合は、D3DERR_INVALIDCALL または D3DERR_WASSTILLDRAWING が返されます。

解説 

D3DLOCK_DONOTWAIT フラグを指定した場合に、ドライバーがサーフェスをすぐにロックできないと、IDirect3DSurface9::LockRect は D3DERR_WASSTILLDRAWING を返します。これは、ドライバーによるサーフェスのロックを待っている間に、アプリケーションで CPU サイクルを利用できるようにするためです。

深度ステンシル サーフェスでロック可能な唯一のフォーマットは、D3DFMT_D16_LOCKABLE です。「D3DFORMAT」を参照してください。

パフォーマンス上の理由により、ダーティ領域はレベル ゼロのテクスチャーの場合にのみ記録されます。ダーティ領域は、D3DLOCK_NO_DIRTY_UPDATED3DLOCK_READONLY も指定しないで IDirect3DSurface9::LockRect が呼び出されると、自動的に記録されます。詳細については、「IDirect3DDevice9::UpdateTexture」を参照してください。

マルチサンプル バック バッファーはロックすることができません。

このメソッドでは、D3DUSAGE_RENDERTARGET を使用して作成されたテクスチャー リソースに含まれるサーフェスのデータを取得することができません。そのようなテクスチャーは D3DPOOL_DEFAULT メモリーに割り当てる必要があるので、ロック可能でないためです。そのような場合は、代わりに IDirect3DDevice9::GetRenderTargetData を使用してデバイス メモリーからシステム メモリーにテクスチャー データをコピーします。

要件

ヘッダー: D3D9.h 宣言

ライブラリ: D3D9.lib 内容

関連項目

IDirect3DSurface9::UnlockRect