Share via


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

Bloqueia um retângulo em uma superfície.

Sintaxe

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

Parâmetros

[out] pLockedRect

Tipo: D3DLOCKED_RECT*

Ponteiro para uma estrutura D3DLOCKED_RECT que descreve a região bloqueada.

[in] pRect

Tipo: const RECT*

Ponteiro para um retângulo a ser bloqueado. Especificado por um ponteiro para uma estrutura RECT . Especificar NULL para esse parâmetro expande a região sujo para cobrir toda a superfície.

[in] Flags

Tipo: DWORD

Combinação de zero ou mais sinalizadores de bloqueio que descrevem o tipo de bloqueio a ser executado. Para esse método, os sinalizadores válidos são:

  • D3DLOCK_DISCARD
  • D3DLOCK_DONOTWAIT
  • D3DLOCK_NO_DIRTY_UPDATE
  • D3DLOCK_NOSYSLOCK
  • D3DLOCK_READONLY
Talvez você não especifique uma subreção ao usar D3DLOCK_DISCARD. Para obter uma descrição dos sinalizadores, consulte D3DLOCK.

Retornar valor

Tipo: HRESULT

Se o método for bem-sucedido, o valor retornado será D3D_OK.

Se o método falhar, o valor retornado poderá ser D3DERR_INVALIDCALL ou D3DERR_WASSTILLDRAWING.

Comentários

Se o sinalizador D3DLOCK_DONOTWAIT for especificado e o driver não puder bloquear a superfície imediatamente, IDirect3DSurface9::LockRect retornará D3DERR_WASSTILLDRAWING para que um aplicativo possa usar os ciclos de CPU enquanto aguarda o driver bloquear a superfície.

O único formato bloqueável para uma superfície de estêncil de profundidade é D3DFMT_D16_LOCKABLE. Consulte D3DFORMAT.

Por motivos de desempenho, sujo regiões são registradas apenas para o nível zero de uma textura. Regiões sujas são registradas automaticamente quando IDirect3DSurface9::LockRect é chamado sem D3DLOCK_NO_DIRTY_UPDATE ou D3DLOCK_READONLY. Consulte IDirect3DDevice9::UpdateTexture para obter mais informações.

Um buffer traseiro de várias amostras não pode ser bloqueado.

Esse método não pode recuperar dados de uma superfície contida por um recurso de textura criado com D3DUSAGE_RENDERTARGET porque essa textura deve ser atribuída a D3DPOOL_DEFAULT memória e, portanto, não é bloqueável. Nesse caso, use IDirect3DDevice9::GetRenderTargetData para copiar dados de textura da memória do dispositivo para a memória do sistema.

Requisitos

   
Plataforma de Destino Windows
Cabeçalho d3d9helper.h (inclua D3D9.h)
Biblioteca D3D9.lib

Confira também

IDirect3DSurface9

IDirect3DSurface9::UnlockRect