Compartilhar via


Copiando valores de Depth-Stencil

O runtime do Microsoft Direct3D chama a função Blt do driver de exibição do modo de usuário para copiar valores de estêncil de profundidade da memória de vídeo para a memória do sistema ou vice-versa. O driver e o hardware devem executar conversões de formato de ou para todos os formatos de estêncil de profundidade opaco com suporte de driver (ou seja, todos os formatos definidos pelo tipo de enumeração D3DDDIFORMAT , exceto D3DDDIFMT_D*_LOCKABLE) para ou de qualquer um dos seguintes formatos:

  • D3DDDIFMT_D16_LOCKABLE

  • D3DDDIFMT_D32_LOCKABLE

  • D3DDDIFMT_D32F_LOCKABLE

  • D3DDDIFMT_S8_LOCKABLE

O driver descarta qualquer canal (profundidade ou estêncil) presente no formato de origem, mas não está presente no formato de destino. O runtime não permite a cópia entre superfícies de estêncil de profundidade que não compartilham nenhum tipo de canal comum.

O driver primeiro converte um valor de profundidade de origem em um valor inteiro sem sinal de 32 bits e, em seguida, do valor inteiro sem sinal de 32 bits para a representação de destino. As seguintes regras se aplicam a ambas as conversões:

  • Se o valor de profundidade de origem for um valor de ponto flutuante, um grampo para [0,1] será aplicado e o resultado será multiplicado por _MAX_UINT.

  • Se a origem for integral e o destino for um inteiro de precisão inferior, os bits extras mais à direita serão removidos.

  • Se a origem for integral e o destino for um inteiro de precisão mais alta, os bits extras mais à direita serão replicados dos bits mais significativos à esquerda.

  • Se a origem for integral e o destino for um valor de ponto flutuante, o inteiro de 32 bits será convertido em um valor de ponto flutuante e o resultado será dividido por _MAX_UINT.

O driver não é necessário para fornecer tratamento especial a valores de profundidade não distribuídos de forma não uniforme.

O driver expande um valor de estêncil de origem para um inteiro de 8 bits (ou seja, o driver armazena o valor do estêncil de origem com zeros à esquerda). Se a representação de destino usar precisão mais baixa, o driver deverá descartar os bits mais significativos para executar a conversão.

Os drivers de exibição no modo de usuário devem dar suporte a cópias de estêncil de profundidade de subreectangles arbitrários. No entanto, os drivers não são necessários para executar operações de espelho, alongamento ou chave de cor durante cópias de estêncil de profundidade. A amostragem de ponto é implicitamente necessária durante cópias de estêncil de profundidade.