Compartir a través de


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

Bloquea un rectángulo en una superficie.

Sintaxis

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

Parámetros

[out] pLockedRect

Tipo: D3DLOCKED_RECT*

Puntero a una estructura de 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 superficie.

[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_DONOTWAIT
  • D3DLOCK_NO_DIRTY_UPDATE
  • D3DLOCK_NOSYSLOCK
  • D3DLOCK_READONLY
Es posible que no especifique un subrecurso al usar D3DLOCK_DISCARD. Para obtener una descripción de las marcas, consulte D3DLOCK.

Valor devuelto

Tipo: HRESULT

Si el método se realiza correctamente, el valor devuelto es D3D_OK.

Si se produce un error en el método, el valor devuelto puede ser D3DERR_INVALIDCALL o D3DERR_WASSTILLDRAWING.

Comentarios

Si se especifica la marca D3DLOCK_DONOTWAIT y el controlador no puede bloquear la superficie inmediatamente, IDirect3DSurface9::LockRect devolverá D3DERR_WASSTILLDRAWING para que una aplicación pueda usar los ciclos de CPU mientras espera a que el controlador bloquee la superficie.

El único formato bloqueable para una superficie de galería de símbolos de profundidad es D3DFMT_D16_LOCKABLE. Consulte D3DFORMAT.

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

No se puede bloquear un búfer atrás de varios ejemplos.

Este método no puede recuperar datos de una superficie contenida en un recurso de textura creado con D3DUSAGE_RENDERTARGET porque dicha textura debe asignarse a D3DPOOL_DEFAULT memoria y, por lo 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

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

Consulte también

IDirect3DSurface9

IDirect3DSurface9::UnlockRect