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 ser desmarcado. Se o número de retângulos estiver definido como zero, Limpar 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.

Valor de retorno

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.

Observações

Como o driver executa a operação de limpeza depende do número de áreas retangulares especificadas no parâmetro NumRect e dos valores definidos no Flags membro 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 for definido como 0 (NumRect== 0) e D3DCLEAR_COMPUTERECTS não estiver definido no de Sinalizadores, o driver limpará 0 pixels (ou seja, um no-op).
  • Se NumRect for definido como 0 e D3DCLEAR_COMPUTERECTS estiver definido em sinalizadores de, o driver limpará todo o visor (não a superfície inteira).
  • Se NumRect for definido como um valor maior que 0 (NumRect!= 0) e D3DCLEAR_COMPUTERECTS estiver definido em sinalizadores de, o driver cortará as áreas retangulares que de pRect especifica no visor atual.
O teste de tesoura também afeta como o driver executa a operação de limpeza. 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 de Teste de Tesoura. Se o estado de renderização D3DRS_SCISSORTESTENABLE estiver definido e o sinalizador D3DCLEAR_COMPUTERECTS estiver definido, o driver deverá recortar as áreas retangulares que de pRect especifica para a área retangular da tesoura.

Se NumRect for definido como um valor maior que 0 (NumRect> 0) e D3DCLEAR_COMPUTERECTS estiver definido em Flags, o driver cortará as áreas retangulares especificadas para o visor atual e o retângulo da tesoura se um aplicativo definido anteriormente D3DRS_SCISSORTESTENABLE. Se NumRect> 0 e D3DCLEAR_COMPUTERECTS não estiver definido, 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 definido anteriormente D3DRS_SCISSORTESTENABLE.

Requisitos

Requisito Valor
da Plataforma de Destino Área de trabalho
cabeçalho d3dumddi.h (inclua D3dumddi.h)

Consulte também

D3DDDIARG_CLEAR

D3DDDI_DEVICEFUNCS

RECT