Método IDirect3DTexture9::LockRect (d3d9helper.h)

Bloquea un rectángulo en un recurso de textura.

Sintaxis

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

Parámetros

[in] Level

Tipo: UINT

Especifica el nivel del recurso de textura que se va a bloquear.

[out] pLockedRect

Tipo: D3DLOCKED_RECT*

Puntero a una estructura D3DLOCKED_RECT , que describe la región bloqueada.

[in] pRect

Tipo: const RECT*

Puntero a un rectángulo que se va a bloquear. Especificado por un puntero a una estructura RECT. Si se especifica NULL para este parámetro, se expande la región desfasada para cubrir toda la textura.

[in] Flags

Tipo: DWORD

Combinación de cero o más marcas de bloqueo que describen el tipo de bloqueo que se va a realizar. Para este método, las marcas válidas son:

  • D3DLOCK_DISCARD
  • D3DLOCK_NO_DIRTY_UPDATE
  • D3DLOCK_NOSYSLOCK
  • D3DLOCK_READONLY
Es posible que no especifique un subrección al usar D3DLOCK_DISCARD. Para obtener una descripción de las marcas, consulte D3DLOCK.

Valor devuelto

Tipo: HRESULT

Si el método se ejecuta correctamente, el valor devuelto es D3D_OK. Si se produce un error en el método, el valor devuelto se puede D3DERR_INVALIDCALL.

Comentarios

Las texturas creadas con D3DPOOL_DEFAULT no se pueden bloquear. Las texturas creadas en la memoria de vídeo se pueden bloquear cuando se crean con USAGE_DYNAMIC.

Por motivos de rendimiento, las regiones desfasadas solo se registran para el nivel cero de una textura. Las regiones desfasadas se registran automáticamente cuando se llama a IDirect3DTexture9::LockRect sin D3DLOCK_NO_DIRTY_UPDATE o D3DLOCK_READONLY. Consulte IDirect3DDevice9::UpdateTexture para obtener más información.

El único formato bloqueable para una textura de galería de símbolos de profundidad es D3DLOCK_D16_LOCKABLE.

Las texturas de memoria de vídeo no se pueden bloquear, pero deben modificarse llamando a IDirect3DDevice9::UpdateSurface o IDirect3DDevice9::UpdateTexture. Hay excepciones para algunos formatos de píxeles de controlador propietarios que Direct3D 9 no reconoce. Se pueden bloquear.

Este método no puede recuperar datos de un recurso de textura creado con D3DUSAGE_RENDERTARGET porque dicha textura debe asignarse a D3DPOOL_DEFAULT memoria y, por tanto, no se puede bloquear. En este caso, use en su lugar IDirect3DDevice9::GetRenderTargetData para copiar datos de textura de la memoria del dispositivo a la memoria del sistema.

Requisitos

Requisito Value
Plataforma de destino Windows
Encabezado d3d9helper.h (incluya D3D9.h)
Library D3D9.lib

Consulte también

IDirect3DDevice9::GetRenderTargetData

IDirect3DDevice9::UpdateTexture

IDirect3DTexture9

IDirect3DTexture9::UnlockRect