Partager via


Fenêtres d’affichage et découpage

Une fenêtre d’affichage est un rectangle à deux dimensions (2D) dans lequel une scène 3D est projetée. Dans Direct3D, le rectangle existe sous forme de coordonnées dans une surface Direct3D utilisée par le système comme cible de rendu. La transformation de projection convertit les sommets en système de coordonnées utilisé pour la fenêtre d’affichage. Une fenêtre d’affichage est également utilisée pour spécifier la plage de valeurs de profondeur sur une surface de cible de rendu dans laquelle une scène sera rendue (généralement 0,0 à 1,0).

Le frustum d’affichage

Un frustum d’affichage est un volume 3D dans une scène positionnée par rapport à la caméra de la fenêtre d’affichage. La forme du volume affecte la façon dont les modèles sont projetés à partir de l’espace de la caméra sur l’écran. Le type de projection le plus courant, une projection de perspective, est responsable de la création d’objets proches de la caméra plus grand que les objets à distance. Pour l’affichage des perspectives, le frustum d’affichage peut être visualisé sous la forme d’une pyramide, avec la caméra positionnée sur la pointe, comme illustré dans l’illustration suivante. Cette pyramide est croisée par un plan de découpage avant et arrière. Le volume dans la pyramide entre les plans de découpage avant et arrière est le frustum d’affichage. Les objets sont visibles uniquement lorsqu’ils se trouvent dans ce volume.

illustration d’un frustrum d’affichage avec un plan de découpage avant et arrière

Si vous imaginez que vous êtes debout dans une pièce sombre et que vous regardez à travers une fenêtre carrée, vous visualisez un frustum d’affichage. Dans cette analogie, le plan de découpage proche est la fenêtre, et le plan de découpage arrière est ce qui interrompt enfin votre vue - le gratte-ciel sur la rue, les montagnes à distance, ou rien du tout. Vous pouvez voir tout à l’intérieur de la pyramide tronquée qui commence à la fenêtre et se termine par toutes les interruptions de votre vue, et vous ne pouvez rien voir d’autre.

Le frustum d’affichage est défini par fov (champ d’affichage) et par les distances des plans de découpage avant et arrière, spécifiés en coordonnées z, comme illustré dans le diagramme suivant.

diagramme du frustum d’affichage

Dans ce diagramme, la variable D correspond à la distance entre la caméra et l’origine de l’espace défini dans la dernière partie du pipeline geometry , la transformation d’affichage. C’est l’espace autour duquel vous organisez les limites de votre frustum d’affichage. Pour plus d’informations sur la façon dont cette variable D est utilisée pour générer la matrice de projection, consultez la transformation de projection

Rectangle de la fenêtre d’affichage

Un struct de fenêtre d’affichage contient quatre membres (X, Y, Width, Height) qui définissent la zone de la surface cible de rendu dans laquelle une scène sera rendue. Ces valeurs correspondent au rectangle de destination ou au rectangle de fenêtre d’affichage, comme illustré dans le diagramme suivant.

diagramme du rectangle de la fenêtre d’affichage

Les valeurs que vous spécifiez pour les membres X, Y, Width, Height sont des coordonnées d’écran par rapport au coin supérieur gauche de la surface cible de rendu. La structure définit deux membres supplémentaires (MinZ et MaxZ) qui indiquent les plages de profondeur dans lesquelles la scène sera rendue.

Direct3D suppose que le volume de découpage de la fenêtre d’affichage passe de -1.0 à 1.0 en X et de 1.0 à -1.0 en Y. Il s’agissait des paramètres utilisés le plus souvent par les applications dans le passé. Vous pouvez ajuster le rapport d’aspect de la fenêtre d’affichage avant de couper à l’aide de la transformation de projection.

Remarque : MinZ et MaxZ indiquent les plages de profondeur dans lesquelles la scène sera rendue et ne sont pas utilisées pour la capture. La plupart des applications définissent ces valeurs sur 0.0 et 1.0 pour permettre au système de s’afficher sur toute la plage de valeurs de profondeur dans la mémoire tampon de profondeur. Dans certains cas, vous pouvez obtenir des effets spéciaux à l’aide d’autres plages de profondeur. Par exemple, pour afficher un affichage tête-haut dans un jeu, vous pouvez définir les deux valeurs sur 0.0 pour forcer le système à restituer des objets dans une scène au premier plan, ou vous pouvez les définir sur 1.0 pour afficher un objet qui doit toujours être en arrière-plan.

 

Les dimensions utilisées dans les membres X, Y, Width, Height d’un struct de fenêtre d’affichage définissent l’emplacement et les dimensions de la fenêtre d’affichage sur l’aire de rendu cible. Ces valeurs se trouvent dans les coordonnées de l’écran, par rapport au coin supérieur gauche de la surface.

Direct3D utilise l’emplacement et les dimensions de la fenêtre d’affichage pour mettre à l’échelle les sommets pour ajuster une scène rendue à l’emplacement approprié sur la surface cible. En interne, Direct3D insère ces valeurs dans la matrice suivante qui est appliquée à chaque vertex.

équation de la matrice appliquée à chaque sommet

Cette matrice met à l’échelle les sommets en fonction des dimensions de la fenêtre d’affichage et de la plage de profondeur souhaitée et les traduit à l’emplacement approprié sur la surface cible de rendu. La matrice retourne également la coordonnée y pour refléter une origine de l’écran en haut à gauche avec y augmentant vers le bas. Une fois cette matrice appliquée, les sommets sont toujours homogènes , c’est-à-dire qu’ils existent toujours en tant que sommets [x,y,z,w] et ils doivent être convertis en coordonnées non homogènes avant d’être envoyés au rastériseur.

Notez que les applications définissent généralement MinZ et MaxZ sur 0,0 et 1,0 respectivement pour que le système s’affiche sur l’ensemble de la plage de profondeur. Toutefois, vous pouvez utiliser d’autres valeurs pour atteindre certains effets. Par exemple, vous pouvez définir les deux valeurs sur 0.0 pour forcer tous les objets au premier plan, ou définir les deux sur 1.0 pour afficher tous les objets en arrière-plan.

 

Effacement d’une fenêtre d’affichage

L’effacement de la fenêtre d’affichage réinitialise le contenu du rectangle de la fenêtre d’affichage sur l’aire de rendu cible. Il peut également effacer le rectangle dans les surfaces de mémoire tampon de profondeur et de gabarit.

Configurer la fenêtre d’affichage pour le découpage

Les résultats de la matrice de projection déterminent le volume de découpage dans l’espace de projection comme suit :

-wc<= xc<= wc

-wc<= yc<= wc

0 <= zc<= wc

Où : x, y, z et w représentent les coordonnées de vertex après l’application de la transformation de projection. Les sommets qui ont un composant x, y ou z en dehors de ces plages sont clippés, si le découpage est activé (comportement par défaut).

Systèmes de coordonnées et géométrie