Поделиться через


Метод 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.

По соображениям производительности грязное области записываются только для нулевого уровня текстуры. Грязные области автоматически записываются при вызове 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 d3d9.h (включая D3D9.h)
Библиотека D3D9.lib

См. также раздел

IDirect3DDevice9::GetRenderTargetData

IDirect3DDevice9::UpdateTexture

IDirect3DTexture9

IDirect3DTexture9::UnlockRect