次の方法で共有


IDirect3DTexture9::LockRect

テクスチャー リソース上の矩形をロックします。

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

パラメータ

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

戻り値

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

解説 

D3DPOOL_DEFAULT を使用して作成されたテクスチャーはロック可能ではありません。ビデオ メモリーで作成されたテクスチャーは、USAGE_DYNAMIC を使用して作成された場合、ロック可能です。

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

深度ステンシル テクスチャーでロック可能な唯一のフォーマットは、D3DLOCK_D16_LOCKABLE です。

ビデオ メモリー テクスチャーは、ロックすることができませんが、IDirect3DDevice9::UpdateSurface または IDirect3DDevice9::UpdateTexture を呼び出して変更する必要があります。Direct3D 9 によって認識されない一部の独自のドライバー ピクセル フォーマットに対しては、例外があります。それらのものは、ロックが可能です。

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

要件

ヘッダー: D3D9.h 宣言

ライブラリ: D3D9.lib 内容

関連項目

IDirect3DTexture9::UnlockRect, IDirect3DDevice9::UpdateTexture, IDirect3DDevice9::GetRenderTargetData