Compartilhar via


Stencil Buffers

Windows Mobile SupportedWindows Embedded CE Supported

9/8/2008

O estêncil reserva ativa ou desativa desenho para o destino processamento superfície em um pixel - por - pixel base. Em seu nível mais básico, ele permite que aplicativos seções máscara a imagem processada de modo que eles não sejam exibidos. Aplicativos geralmente usam buffers estêncil para efeitos especiais, como dissolves, decaling e estrutura de tópicos.

Informações reserva estêncil está incorporado na z-dados reserva. Seu aplicativo pode usar o IDirect3DMobile::CheckDeviceFormat método para verificar para suporte estêncil hardware, como mostra o seguinte exemplo de código.

// Reject devices that cannot perform 8-bit stencil buffering.
// The following example assumes that pCaps is a valid pointer 
// to an initialized D3DMCAPS structure. 

if( FAILED( m_pD3DM->CheckDeviceFormat( pCaps->AdapterOrdinal,
                                       pCaps->DeviceType,  
                                       Format,  
                                       0, 
                                       D3DMRTYPEFLAG_SURFACE,
                                       D3DMFMT_D24S8 ) ) )
        return E_FAIL;

IDirect3DMobile::CheckDeviceFormat Permite que você escolher um dispositivo Criar com base nos recursos desse dispositivo. Neste maiúsculas e minúsculas, dispositivos que faça não suporte 8 - bit estêncil buffers são rejeitados. Observe que essa é apenas um possível uso para IDirect3DMobile::CheckDeviceFormat.

Para determinar as limitações reserva estêncil de um dispositivo, consulta o StencilCaps membro das D3DMCAPS estrutura para sua com suporte operações reserva estêncil.

Como a Works de buffer estêncil

Mobile ® Direct3D Microsoft ® efetua um testar no conteúdo da reserva de estêncil em um pixel - por - pixel base. Para cada pixel na superfície de destino, ele executa uma testar usando o correspondente valor na reserva estêncil, um valor de referência estêncil e um valor máscara estêncil. Se a testar passa, Mobile Direct3D executa uma ação. A testar é realizada usando a seguinte etapas:

  1. Executar um bit a bit E operação do valor de referência estêncil com a máscara estêncil.
  2. Executar um bit a bit E operação de valor reserva o estêncil para a atual pixel com a máscara estêncil.
  3. Compare o resultado da etapa 1 para o resultado da etapa 2, usando a função de comparação.

Essas etapas são mostradas no seguinte exemplo de código.

(StencilRef & StencilMask) CompFunc (StencilBufferValue & StencilMask)

StencilBufferValue é o conteúdo de reserva de estêncil para a atual pixel. Esta exemplo de código usa o símbolo E comercial (&) para representar a bit a bit E operação. StencilMask representa o valor de máscara de estêncil, e StencilRef representa o valor de referência estêncil. CompFunc é a função de comparação.

O atual pixel é escrito para a superfície destino caso a testar estêncil passa e é ignorado caso contrário. O comportamento de comparação usar como padrão é gravar o pixel, no Matter como cada bit a bit operação acontece (D3DMCMP_ALWAYS). Você pode alteração esse comportamento, alterando o valor de estado de processar D3DMRS_STENCILFUNC (consulte D3DMRENDERSTATETYPE), passando um membro das D3DMCMPFUNC tipo enumerado para identificar a função de comparação desejada.

Personalizando o buffer estêncil

Seu aplicativo pode personalizar a operação de reserva de estêncil. Ele pode definir a função de comparação, a máscara estêncil e o valor de referência estêncil. Ele também pode controle a ação que Direct3D Mobile executa quando passa a testar estêncil ou falhar.

See Also

Concepts

Direct3D Mobile Resources