Débogage Graphics DirectX
Visual Studio contient les outils de diagnostic que vous pouvez utiliser pour résoudre des problèmes de rendu dans les jeux et les applications basés sur DirectX.
Débogage des graphiques DirectX dans Visual Studio
Le débogage des problèmes de rendu dans un jeu ou une application n'est généralement pas aussi simple que le démarrage d'un débogueur et une exécution pas à pas du code.Le diagnostic des problèmes de rendu graphique présente plusieurs défis uniques.Par exemple, dans un frame donné, des centaines de milliers (si ce n'est pas des millions) de pixels sont produits en tant que sortie et bien davantage de fois peuvent être produits mais jamais constatés ; probablement que certains pixels affichent le problème que vous tentez de diagnostiquer.En outre, il peut atteindre plusieurs gigaoctets de données sous-jacents derrière chaque frame rendu, et compliquer encore davantage les questions traitées, toutes ces données sont traitées sur le matériel dédié qui fractionne le travail en centaines ou milliers d'unités de traitement spécialisées, qui ne sont pas couvertes par l'observation directe de l'UC (CPU).Les débogueurs classiques ne sont pas conçus pour résoudre ces types de problèmes.
Les outils de diagnostic de graphiques de Visual Studio sont conçus pour vous aider à identifier la source des problèmes de rendu en commençant par les artefacts visuels qui indiquent le problème, puis en remontant dans le code de nuanceur associé, le pipeline de graphiques, les appels de dessin, les ressources et l'état du périphérique, et même dans le code source de l'application.
Voici certains genres de problèmes de rendu que Visual Studio peut vous aider à résoudre.
État du périphérique
La configuration correcte du périphérique graphique est importante car elle définit les conditions que le modèle et les données de texture doivent réunir dans l'ensemble de l'application.Par exemple, si l'état du périphérique spécifie l'ordre d'enroulement identique à celui du sens des aiguilles d'une montre, tout modèle qui spécifie des sommets dans un sens différent de celui des aiguilles d'une montre ne sera pas affiché correctement ; ou, si la fonction test de l'intensité a la valeur « supérieure à », les objets les plus éloignés seront dessinés au-dessus des objets qui sont les plus proches.Les problèmes d'état de périphérique peuvent être difficiles à diagnostiquer car la cause du problème dans le code source est souvent supprimée des objets affectés.
Les diagnostics de graphiques peuvent vous aider à examiner l'état des données et du périphérique derrière les pixels affectés afin que vous puissiez limiter les problèmes d'état du périphérique.
Bogues Shader
Faire une erreur dans le code d'application est presque inévitable, que le code soit du code C++ ou High Level Shader Language (HLSL).Toutefois, le code HLSL de débogage était généralement plus difficile car il ne bénéficiait pas de la prise en charge du débogage enrichi que C++ et d'autres langages offrent.
Les diagnostics de graphiques peuvent vous aider à identifier et résoudre les bogues de nuanceurs car il permet de déboguer le code HLSL.À l'aide des informations capturées dans un journal de graphiques, le débogueur HLSL peut « relire » les événements de dessin au niveau du shader afin de lancer l'exécution pas à pas, définir des points d'arrêt et examiner le contenu des variables temporaires, des paramètres et des mémoires tampons constantes.Pour vous aider à vous concentrer sur l'élément approprié, Graphics Diagnostics fournit des points d'entrée de HLSL debugger à partir des événements de dessin (via la fenêtre Étapes de canalisation Graphics) et des pixels individuels (via Historique des pixels Graphics).
Paramètres et constantes non initialisés ou non valides
Les applications graphiques utilisent des paramètres et des mémoires tampons constantes pour fournir efficacement des informations au pipeline de graphiques afin que les objets soient transformés ou s'affichent différemment par code de nuanceur personnalisé.Lorsqu'une mémoire tampon constante ou un paramètre n'a pas été initialisée, ou lorsqu'il ne contient pas la valeur attendue, l'objet correspondant est affiché correctement, voire pas du tout.Il peut être difficile diagnostiquer des problèmes avec une mémoire tampon constante ou un paramètre car il n'est pas toujours facile si l'erreur est provoquée par un problème avec une mémoire tampon constante ou un paramètre, ou par un bogue dans le code shader, et s'il s'agit d'un bogue shader, que les shaders correspondent à celui-ci.
Les diagnostics de graphiques peuvent vous aider à identifier les nuanceurs correspondant à l'erreur et utilisant le débogueur HLSL pour examiner le code de nuanceur afin que vous puissiez limiter les problèmes de mémoire tampon constante et de paramétrage.Lorsque vous êtes satisfait du code de nuanceur, vous pouvez utiliser le débogueur HLSL pour identifier des paramètres ou des constantes suspects, utiliser la Pile des appels des événements Graphics pour naviguer dans le code d'application qui a affiché l'objet affecté, puis rechercher l'emplacement où la mémoire tampon de constante ou de paramètre a été définie.
Compatibilité des versions DirectX
Graphics Diagnostics prend en charge les applications qui utilisent Direct3D 10, Direct3D 10.1, Direct3D 11 et Direct3D 11.1, et fournit une prise en charge limitée des applications qui utilisent Direct2D.Elle ne prend pas en charge les applications qui utilisent des versions antérieures de Direct3D, DirectDraw ou d'autres API graphiques.
Prise en charge limitée de Direct2D
Comme l'API Direct2D utilise l'API Direct3D pour la grande partie de sa fonctionnalité, le moteur Graphics Diagnostics peut être utilisé pour déboguer les applications qui utilisent Direct2D.Toutefois, comme Graphics Diagnostics raccorde les événements Direct3D sous-jacents au lieu des événements Direct2D de niveau supérieur, il n'acquiert pas les détails des événements Direct2D qui n'utilisent pas Direct3D.En outre, comme les relations entre les appels d'API Direct2D et les appels d'API Direct3D résultants ne sont pas toujours claires, l'utilisation de Graphics Diagnostics pour les applications Direct2D n'est pas simple.Vous pouvez toujours utiliser les diagnostics de graphiques pour obtenir des informations sur les problèmes de bas niveau de rendu dans les applications qui utilisent Direct2D.
Configuration requise pour le système d'exploitation et le Kit de développement logiciel
Windows 8 installe les composants Runtime requis par les fonctionnalités de débogage de graphiques décrites dans ce document.Pour utiliser ces fonctionnalités dans Windows 7 et Windows Vista, vous devez installer l'un des kits de développement logiciel (SDK) suivants :
Kit de développement logiciel DirectX (juin 2010)
Kit de développement logiciel Windows (version 7.1)
Rubriques connexes
Titre |
Description |
---|---|
Décrit comment utiliser Graphics Diagnostics pour diagnostiquer et déboguer des problèmes de rendu dans des applications DirectX. |
|
Fournit des liens vers des articles qui expliquent comment utiliser les diagnostics de graphiques pour entrer les informations graphiques et pour diagnostiquer des problèmes courants de rendu. |
|
Présente les fonctionnalités de débogage dans Visual Studio. |
|
Fournit des liens vers des articles qui traitent les technologies de graphiques DirectX. |