Partager via


Rendu d’un effet (Direct3D 10)

Vous pouvez utiliser un effet pour stocker des informations ou effectuer un rendu à l’aide d’un groupe d’états. Chaque technique spécifie les nuanceurs de vertex, les nuanceurs de géométrie, les nuanceurs de pixels, l’état du nuanceur, l’état de l’échantillonneur et de la texture ainsi que l’état d’autres pipelines. Ainsi, après avoir organisé l’état dans un effet, vous pouvez encapsuler l’effet de rendu qui résulte de cet état en créant et en rendant l’effet.

Quelques étapes sont nécessaires afin de préparer un effet pour le rendu. La première est la compilation. Cette étape vérifie le code de type HLSL par rapport à la syntaxe du langage HLSL et aux règles de l’infrastructure d’effet. Vous pouvez compiler un effet à partir de votre application à l’aide d’appels d’API ou hors connexion à l’aide du compilateur d’effet. Une fois votre effet compilé, créez-le en appelant un ensemble d’API différent (mais très similaire).

Une fois l’effet créé, il vous reste deux étapes à effectuer avant de l’utiliser. Tout d’abord, vous devez initialiser les valeurs d’état d’effet (valeurs des variables d’effet) à l’aide d’un certain nombre de méthodes pour définir l’état. Pour certaines variables, cette opération peut être effectuée une seule fois lors de la création d’un effet ; d’autres doivent être mises à jour chaque fois que votre application appelle la boucle de rendu. Une fois les variables d’effet définies, indiquez au runtime d’afficher l’effet en appliquant une technique. Ces sujets sont décrits plus en détail ci-dessous.

Naturellement, vous devez tenir compte des considérations relatives aux performances lors de l’utilisation d’effets. Ces considérations sont globalement les mêmes que celles à prendre en compte si vous n’utilisez pas d’effet. Il s’agit notamment de la réduction de la quantité de modifications d’état ou de l’organisation des variables qui doivent être mises à jour par fréquence. Ces tactiques permettent de réduire la quantité de données qui doivent être envoyées de l’UC au GPU, réduisant ainsi les problèmes de synchronisation potentiels.

Effets (Direct3D 10)