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
返回值
类型: HRESULT
如果方法成功,则返回值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 将纹理数据从设备内存复制到系统内存。
要求
目标平台 | Windows |
标头 | d3d9.h (包括 D3D9.h) |
Library | D3D9.lib |
请参阅
IDirect3DDevice9::GetRenderTargetData