Compartilhar via


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

Bloqueia um retângulo em um recurso de textura.

Sintaxe

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

Parâmetros

[in] Level

Tipo: UINT

Especifica o nível do recurso de textura a ser bloqueado.

[out] pLockedRect

Tipo: D3DLOCKED_RECT*

Ponteiro para uma estrutura D3DLOCKED_RECT , descrevendo 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 textura.

[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_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.

Comentários

Texturas criadas com D3DPOOL_DEFAULT não são bloqueáveis. Texturas criadas na memória de vídeo são bloqueáveis quando criadas com USAGE_DYNAMIC.

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 IDirect3DTexture9::LockRect é chamado sem D3DLOCK_NO_DIRTY_UPDATE ou D3DLOCK_READONLY. Consulte IDirect3DDevice9::UpdateTexture para obter mais informações.

O único formato bloqueável para uma textura de estêncil de profundidade é D3DLOCK_D16_LOCKABLE.

As texturas de memória de vídeo não podem ser bloqueadas, mas devem ser modificadas chamando IDirect3DDevice9::UpdateSurface ou IDirect3DDevice9::UpdateTexture. Há exceções para alguns formatos de pixel de driver proprietários que o Direct3D 9 não reconhece. Eles podem ser bloqueados.

Esse método não pode recuperar dados de 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

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

Confira também

IDirect3DDevice9::GetRenderTargetData

IDirect3DDevice9::UpdateTexture

IDirect3DTexture9

IDirect3DTexture9::UnlockRect