Метод IDirect3DTexture9::LockRect (d3d9helper.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.
По соображениям производительности грязное области записываются только для нулевого уровня текстуры. Грязные области автоматически записываются при вызове IDirect3DTexture9::LockRect без D3DLOCK_NO_DIRTY_UPDATE или D3DLOCK_READONLY. Дополнительные сведения см. в разделе IDirect3DDevice9::UpdateTexture .
Единственным блокируемым форматом текстуры трафарета глубины является D3DLOCK_D16_LOCKABLE.
Текстуры видеопамяти не могут быть заблокированы, но их необходимо изменить, вызвав IDirect3DDevice9::UpdateSurface или IDirect3Device9::UpdateTexture. Существуют исключения для некоторых собственных форматов пикселей драйвера, которые Direct3D 9 не распознает. Их можно заблокировать.
Этот метод не может получить данные из ресурса текстуры, созданного с помощью D3DUSAGE_RENDERTARGET , так как такая текстура должна быть назначена D3DPOOL_DEFAULT памяти и поэтому не блокируется. В этом случае используйте вместо него IDirect3DDevice9::GetRenderTargetData для копирования данных текстуры из памяти устройства в системную память.
Требования
Требование | Значение |
---|---|
Целевая платформа | Windows |
Header | d3d9helper.h (включая D3D9.h) |
Библиотека | D3D9.lib |
См. также раздел
IDirect3DDevice9::GetRenderTargetData