Share 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 en tant que coordonnées dans une surface Direct3D que le système utilise comme cible de rendu. La transformation de projection convertit les sommets dans le 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 de 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 en perspective, est responsable de faire apparaître des objets près de la caméra plus grands que les objets de la distance. Pour l’affichage en perspective, le frustum d’affichage peut être visualisé sous la forme d’une pyramide, avec la caméra positionnée à l’extrémité, 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’observation. Les objets ne sont visibles que 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 vous trouvez 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 tout ce qui interrompt finalement votre vue - le gratte-ciel de l’autre côté de la rue, les montagnes au loin, 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 tout ce qui interrompt votre vue, et vous ne pouvez voir rien d’autre.

Le frustum d’affichage est défini par fov (champ de vue) et par les distances des plans de découpage avant et arrière, spécifiées 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 qui a été défini dans la dernière partie du pipeline geometry : la transformation d’affichage. Il s’agit de 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 Projection

Rectangle de 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 de cible de rendu dans laquelle une scène sera rendue. Ces valeurs correspondent au rectangle de destination, ou rectangle de fenêtre d’affichage, comme illustré dans le diagramme suivant.

diagramme du rectangle de fenêtre d’affichage

Les valeurs que vous spécifiez pour les membres X, Y, Width et 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 est de -1.0 à 1.0 dans X et de 1.0 à -1.0 dans Y. Il s’agissait des paramètres utilisés le plus souvent par les applications dans le passé. Vous pouvez ajuster les proportions de la fenêtre d’affichage avant le découpage à l’aide de la transformation de projection.

Note MinZ et MaxZ indiquent les plages de profondeur dans lesquelles la scène sera rendue et ne sont pas utilisées pour le découpage. La plupart des applications définissent ces valeurs sur 0.0 et 1.0, pour permettre au système de rendre à l’ensemble de la plage de valeurs de profondeur dans la mémoire tampon de profondeur. Dans certains cas, vous pouvez obtenir des effets spéciaux en utilisant d’autres plages de profondeur. Par instance, pour afficher un affichage tête haute 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 la surface cible de rendu. Ces valeurs sont exprimées en coordonnées d’écran, par rapport à l’angle 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 afin de les adapter à 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 sommet.

é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 dans le coin supérieur gauche avec y croissant 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 doivent être convertis en coordonnées non homogènes avant d’être envoyés au rastériseur.

Note 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 obtenir 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 la surface de la cible de rendu. Il peut également effacer le rectangle dans les surfaces tampons 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. Tous les sommets qui ont un composant x, y ou z en dehors de ces plages sont coupés, si le découpage est activé (comportement par défaut).

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