IDirect3DTexture9::LockRect 方法 (d3d9.h)

锁定纹理资源上的矩形。

语法

HRESULT LockRect(
  [in]  UINT           Level,
  [out] D3DLOCKED_RECT *pLockedRect,
  [in]  const RECT     *pRect,
  [in]  DWORD          Flags
);

参数

[in] Level

类型: UINT

指定要锁定的纹理资源的级别。

[out] pLockedRect

类型: D3DLOCKED_RECT*

指向 D3DLOCKED_RECT 结构的指针,描述锁定的区域。

[in] pRect

类型: const RECT*

指向要锁定的矩形的指针。 由指向 RECT 结构的指针指定。 为此参数指定 NULL 会扩展脏区域以覆盖整个纹理。

[in] Flags

类型: DWORD

描述要执行的锁类型的零个或多个锁定标志的组合。 对于此方法,有效标志为:

  • D3DLOCK_DISCARD
  • D3DLOCK_NO_DIRTY_UPDATE
  • D3DLOCK_NOSYSLOCK
  • D3DLOCK_READONLY
使用 D3DLOCK_DISCARD 时,不得指定子项。 有关标志的说明,请参阅 D3DLOCK

返回值

类型: HRESULT

如果方法成功,则返回值D3D_OK。 如果 方法失败,则可以D3DERR_INVALIDCALL返回值。

备注

使用D3DPOOL_DEFAULT创建的纹理不可锁定。 使用 USAGE_DYNAMIC 创建时,在视频内存中创建的纹理可锁定。

出于性能原因,脏区域仅记录纹理的零级。 在不D3DLOCK_NO_DIRTY_UPDATE或D3DLOCK_READONLY的情况下调用 IDirect3DTexture9::LockRect 时,会自动记录脏区域。 有关详细信息,请参阅 IDirect3DDevice9::UpdateTexture

深度模具纹理的唯一可锁定格式是 D3DLOCK_D16_LOCKABLE

视频内存纹理无法锁定,但必须通过调用 IDirect3DDevice9::UpdateSurfaceIDirect3DDevice9::UpdateTexture 进行修改。 Direct3D 9 无法识别的某些专有驱动程序像素格式存在例外情况。 这些可以锁定。

此方法无法从使用 D3DUSAGE_RENDERTARGET 创建的纹理资源检索数据,因为此类纹理必须分配给D3DPOOL_DEFAULT内存,因此不可锁定。 在这种情况下,请改用 IDirect3DDevice9::GetRenderTargetData 将纹理数据从设备内存复制到系统内存。

要求

   
目标平台 Windows
标头 d3d9.h (包括 D3D9.h)
Library D3D9.lib

请参阅

IDirect3DDevice9::GetRenderTargetData

IDirect3DDevice9::UpdateTexture

IDirect3DTexture9

IDirect3DTexture9::UnlockRect