Partager via


Copie de valeurs Depth-Stencil

Le runtime Microsoft Direct3D appelle la fonction Blt du pilote d’affichage en mode utilisateur pour copier les valeurs de gabarit de profondeur de la mémoire vidéo vers la mémoire système, ou vice versa. Le pilote et le matériel doivent effectuer des conversions de format depuis ou vers tous les formats de gabarit de profondeur opaque pris en charge par le pilote (autrement dit, tous les formats définis par le type d’énumération D3DDDIFORMAT à l’exception de D3DDDIFMT_D*_LOCKABLE) vers ou depuis l’un des formats suivants :

  • D3DDDIFMT_D16_LOCKABLE

  • D3DDDIFMT_D32_LOCKABLE

  • D3DDDIFMT_D32F_LOCKABLE

  • D3DDDIFMT_S8_LOCKABLE

Le pilote ignore tout canal (profondeur ou gabarit) présent dans le format source, mais pas dans le format de destination. Le runtime n’autorise pas la copie entre des surfaces de profondeur-gabarit qui ne partagent aucun type de canal commun.

Le pilote convertit d’abord une valeur de profondeur source en une valeur entière non signée 32 bits, puis de la valeur d’entier non signé 32 bits à la représentation de destination. Les règles suivantes s’appliquent à ces deux conversions :

  • Si la valeur de profondeur source est une valeur à virgule flottante, une limite à [0,1] est appliquée et le résultat est multiplié par _MAX_UINT.

  • Si la source est intégrale et que la destination est un entier de précision inférieure, les bits supplémentaires les plus à droite sont supprimés.

  • Si la source est intégrale et que la destination est un entier de précision supérieure, les bits supplémentaires les plus à droite sont répliqués à partir des bits les plus significatifs à gauche.

  • Si la source est intégrale et que la destination est une valeur à virgule flottante, l’entier 32 bits est converti en valeur à virgule flottante et le résultat est divisé par _MAX_UINT.

Le pilote n’est pas tenu de fournir un traitement spécial aux valeurs de profondeur non distribuées de manière unique.

Le pilote étend une valeur de gabarit source à un entier 8 bits (autrement dit, le pilote rembourse la valeur du gabarit source avec des zéros à gauche). Si la représentation de destination utilise une précision inférieure, le pilote doit ignorer les bits les plus significatifs pour effectuer la conversion.

Les pilotes d’affichage en mode utilisateur doivent prendre en charge les copies de gabarits de profondeur des sous-corrections arbitraires. Toutefois, les pilotes ne sont pas obligés d’effectuer des opérations de miroir, d’étirement ou de touche de couleur pendant les copies de gabarit de profondeur. L’échantillonnage de points est implicitement requis lors des copies de gabarit de profondeur.