IDirect3DSurface9::LockRect 方法 (d3d9.h)
锁定图面上的矩形。
语法
HRESULT LockRect(
[out] D3DLOCKED_RECT *pLockedRect,
[in] const RECT *pRect,
[in] DWORD Flags
);
参数
[out] pLockedRect
类型: D3DLOCKED_RECT*
指向描述锁定区域的 D3DLOCKED_RECT 结构的指针。
[in] pRect
类型: const RECT*
指向要锁定的矩形的指针。 由指向 RECT 结构的指针指定。 为此参数指定 NULL 会扩展脏区域以覆盖整个图面。
[in] Flags
类型: DWORD
描述要执行的锁类型的零个或多个锁定标志的组合。 对于此方法,有效标志为:
- D3DLOCK_DISCARD
- D3DLOCK_DONOTWAIT
- D3DLOCK_NO_DIRTY_UPDATE
- D3DLOCK_NOSYSLOCK
- D3DLOCK_READONLY
返回值
类型: HRESULT
如果方法成功,则返回值D3D_OK。
如果方法失败,则返回值可以D3DERR_INVALIDCALL或D3DERR_WASSTILLDRAWING。
注解
如果指定 了D3DLOCK_DONOTWAIT 标志,并且驱动程序无法立即锁定图面, 则 IDirect3DSurface9::LockRect 将返回D3DERR_WASSTILLDRAWING,以便应用程序可以在等待驱动程序锁定图面时使用 CPU 周期。
深度模具表面的唯一可锁定格式是D3DFMT_D16_LOCKABLE。 请参阅 D3DFORMAT。
出于性能原因,脏区域仅记录纹理的零级。 在不D3DLOCK_NO_DIRTY_UPDATE或D3DLOCK_READONLY的情况下调用 IDirect3DSurface9::LockRect 时,会自动记录脏区域。 有关详细信息,请参阅 IDirect3DDevice9::UpdateTexture 。
无法锁定多重采样后台缓冲区。
此方法无法从使用 D3DUSAGE_RENDERTARGET 创建的纹理资源包含的图面中检索数据,因为此类纹理必须分配给D3DPOOL_DEFAULT内存,因此不可锁定。 在这种情况下,请改用 IDirect3DDevice9::GetRenderTargetData 将纹理数据从设备内存复制到系统内存。
要求
要求 | 值 |
---|---|
目标平台 | Windows |
标头 | d3d9.h (包括 D3D9.h) |
Library | D3D9.lib |