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_UPDATE も D3DLOCK_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