Compartilhar via


PFND3DDDI_CLEAR função de retorno de chamada (d3dumddi.h)

A função Clear executa a limpeza assistida por hardware no destino de renderização, no buffer de profundidade ou no buffer de estêncil.

Sintaxe

PFND3DDDI_CLEAR Pfnd3dddiClear;

HRESULT Pfnd3dddiClear(
  [in] HANDLE hDevice,
       const D3DDDIARG_CLEAR *unnamedParam2,
       UINT unnamedParam3,
       const RECT *unnamedParam4
)
{...}

Parâmetros

[in] hDevice

Um identificador para o dispositivo de exibição (contexto gráfico).

unnamedParam2

pData [in]

Um ponteiro para uma estrutura D3DDDIARG_CLEAR que descreve os parâmetros da operação de limpeza assistida por hardware.

unnamedParam3

NumRect [in]

O número de retângulos na matriz em pRect a serem limpos. Se o número de retângulos estiver definido como zero, Clear deverá limpar todo o destino de renderização, o buffer de profundidade e o buffer de estêncil. Nessa situação, o conteúdo da matriz em pRect é indefinido e o driver não deve tentar lê-los.

unnamedParam4

pRect [in]

Uma matriz de estruturas RECT que indicam as áreas retangulares do buffer que o driver deve limpar.

Retornar valor

Clear retornará S_OK ou um resultado de erro apropriado se a operação de limpeza assistida por hardware não for executada com êxito.

Comentários

A forma como o driver executa a operação clara depende do número de áreas retangulares especificadas no parâmetro NumRect e dos valores definidos no membro Flags do D3DDDIARG_CLEAR. Os valores D3DCLEAR_TARGET, D3DCLEAR_STENCIL e D3DCLEAR_ZBUFFER (definidos em D3d8types.h) indicam o tipo de buffer a ser limpo. O valor D3DCLEAR_COMPUTERECTS (definido em D3dhal.h) indica como limpar o buffer. As seguintes configurações indicam como o driver deve limpar o tipo de buffer especificado:

  • Se NumRect estiver definido como 0 (NumRect== 0) e D3DCLEAR_COMPUTERECTS não estiver definido em Sinalizadores, o driver limpará 0 pixels (ou seja, uma não operação).
  • Se NumRect estiver definido como 0 e D3DCLEAR_COMPUTERECTS estiver definido em Sinalizadores, o driver limpará todo o visor (não toda a superfície).
  • Se NumRect for definido como um valor maior que 0 (NumRect!= 0) e D3DCLEAR_COMPUTERECTS for definido em Sinalizadores, o driver cortará as áreas retangulares especificadas pelo pRect no visor atual.
O teste de tesoura também afeta como o driver executa a operação clara. Um aplicativo define o estado de renderização D3DRS_SCISSORTESTENABLE em uma chamada para o método IDirect3DDevice9::SetRenderState para habilitar o teste de tesoura. Para obter mais informações sobre o teste de tesoura, consulte Teste de tesoura. Se o D3DRS_SCISSORTESTENABLE estado de renderização estiver definido e o sinalizador D3DCLEAR_COMPUTERECTS estiver definido, o driver deverá recortar as áreas retangulares especificadas pelo pRect para a área retangular da tesoura.

Se NumRect for definido como um valor maior que 0 (NumRect> 0) e D3DCLEAR_COMPUTERECTS for definido em Sinalizadores, o driver cortará as áreas retangulares especificadas para o visor atual e para o retângulo de tesoura se um aplicativo tiver definido anteriormente D3DRS_SCISSORTESTENABLE. Se NumRect> 0 e D3DCLEAR_COMPUTERECTS não estiverem definidos, o driver determinará que o runtime do Direct3D já cortou as áreas retangulares especificadas para o visor atual e para o retângulo de tesoura se um aplicativo tiver definido anteriormente D3DRS_SCISSORTESTENABLE.

Requisitos

Requisito Valor
Plataforma de Destino Área de Trabalho
Cabeçalho d3dumddi.h (inclua D3dumddi.h)

Confira também

D3DDDIARG_CLEAR

D3DDDI_DEVICEFUNCS

RECT