Configuration de l’environnement de programmation Direct3D 12

Décrit l’installation, les outils et les bibliothèques prises en charge qui constituent un environnement de développement Direct3D 12 productif.

Environnement de développement

Les en-têtes et bibliothèques Direct3D 12 font partie du Kit de développement logiciel (SDK) Windows 10. Aucun autre téléchargement ni installation n'est nécessaire pour utiliser Direct3D 12.

Une fois que vous avez installé le logiciel du Kit de développement logiciel (SDK) Windows 10 et Visual Studio, la configuration de votre environnement de programmation Direct3D 12 est terminée. Visual Studio 2019 est recommandé, car il inclut les outils de débogage graphique D3D12, mais les versions antérieures de Visual Studio fonctionnent pour le développement de programmes.

Pour utiliser l’API Direct3D 12, incluez D3d12.h et créez un lien vers D3d12.lib, ou interrogez les points d’entrée directement dans D3d12.dll.

Les en-têtes et bibliothèques suivants sont disponibles. L’emplacement des bibliothèques statiques dépend de la version (32 bits ou 64 bits) de Windows 10 exécutée sur votre ordinateur.

Nom du fichier d’en-tête ou de bibliothèque Description Emplacement d’exploration
D3d12.h En-tête de l’API Direct3D 12 %WindowsSdkDir\Include%WindowsSDKVersion%\\um
D3d12.lib Bibliothèque de stubs de l’API Direct3D 12 statique %WindowsSdkDir\Lib%WindowsSDKVersion%\\um\arch
D3d12.dll Bibliothèque de l’API Direct3D 12 dynamique %WINDIR%\System32
D3d12SDKLayers.h En-tête de débogage Direct3D 12 %WindowsSdkDir\Include%WindowsSDKVersion%\\um
D3d12SDKLayers.dll Bibliothèque de débogage Direct3D 12 dynamique %WINDIR%\System32

Langues prises en charge

C++ est le seul langage pris en charge pour le développement Direct3D 12, C# et d’autres langages .NET ne sont pas pris en charge.

Structures de l’assistance

Il existe un certain nombre de structures d’assistance qui facilitent notamment l’initialisation d’un certain nombre de structures D3D12. Ces structures et certaines fonctions utilitaires se trouvent dans l’en-tête D3dx12.h. Cet en-tête est open source et peut être modifié par un développeur en fonction des besoins : téléchargez-le à partir de la bibliothèque d’assistance D3D12 et reportez-vous à la section Structures et fonctions d’assistance pour D3D12.

Bibliothèque de gestion de la mémoire

Une bibliothèque d’assistance de gestion de la mémoire est disponible au téléchargement et intégrable à votre application pour qu’elle corresponde davantage au comportement de gestion de la mémoire D3D11. En tant que bibliothèque de gestion de style D3D11, c'est la plus efficace avec les applications qui utilisent toujours une stratégie d’allocation de type ressource validée. En particulier, la bibliothèque doit être considérée comme tremplin pour revenir à la gestion de la mémoire performante D3D11 dans les scénarios limités en termes de mémoire (par exemple, cartes mémoire bas de gamme, 4k, paramètres Ultra, etc.). Les API D3D12 permettent d'utiliser des techniques visant à obtenir une meilleure efficacité de la mémoire par rapport à D3D11, bien que ces techniques puissent être difficiles et fastidieuses à implémenter.

Notez que cette bibliothèque est au stade de développement et peut changer au fil du temps. Utilisez les liens ci-dessous pour accéder à la bibliothèque et aux exemples.

Outils et bibliothèques pris en charge

Les bibliothèques suivantes peuvent toutes être utilisées avec Direct3D 12.

Bibliothèque Objectif Documentation
Kit d’outils DirectX pour DirectX 12 Collection importante de classes d’assistance pour l’écriture de code Direct3D 12 C++ pour les applications UWP (Universal Windows Platform), les applications de bureau Win32 pour Windows 10 et les applications exclusives Xbox One. Wiki DirectX12TK
DirectXTex Utilisez-le pour lire et écrire des fichiers DDS et effectuer diverses opérations de traitement de contenu de texture, notamment le redimensionnement, la conversion de format, la génération de mipmaps, la compression de bloc pour les ressources de texture d'exécution Direct3D et la conversion de cartes de hauteur en cartes normales. Wiki DirectXTex
DirectXMesh Sert à effectuer diverses opérations de traitement de contenu géométrique, notamment la génération de normales et d'images tangentes, les calculs d'adjacence triangulaires et l’optimisation du cache du vertex. Wiki DirectXMesh
DirectXMath Un grand nombre de classes d’assistance et de méthodes pour prendre en charge des vecteurs, des scalaires, des matrices, des quaternions et de nombreuses autres opérations mathématiques. Documentation DirectXMath sur MSDN
UVAtlas Sert à créer et compresser un atlas de textures ISO. Wiki UVAtlas

 

Exemples

Pour obtenir la liste des exemples D3D12 fonctionnels et savoir comment les localiser et les exécuter, reportez-vous à la section Exemples fonctionnels.

Pour des procédures pas à pas sur l’ajout de code afin d'activer des fonctionnalités particulières, reportez-vous aux Procédures de code D3D12.

Couche de débogage

La couche de débogage fournit un paramètre supplémentaire et une validation de cohérence étendus (telles que la validation de la liaison de nuanceurs et de la liaison de ressources, la validation de la cohérence des paramètres et la signalisation des descriptions d'erreurs).

Remarque

Pour Windows 10, pour créer un appareil prenant en charge la couche de débogage, activez la fonctionnalité facultative « Outils graphiques ». Sur Windows 10 22H2, accédez au panneau Paramètres, sous Système. Sur les versions antérieures de Windows 10, accédez au panneau Paramètres, sous Applications > Applications et fonctionnalités. Accédez à Fonctionnalités facultatives > Ajouter une fonctionnalité, puis recherchez « Outils graphiques ».

L’en-tête requis pour prendre en charge la couche de débogage, D3D12SDKLayers.h, est inclus par défaut à partir de d3d12.h.

Lorsque la couche de débogage répertorie les fuites de mémoire, elle génère une liste de pointeurs d’interface objet ainsi que leurs noms conviviaux. Le nom convivial par défaut est « <sans nom> ». Vous pouvez définir le nom convivial à l’aide de la méthode ID3D12Object::SetName. En règle générale, vous devez compiler ces appels en dehors de votre version de production.

Nous vous recommandons d’utiliser la couche de débogage pour déboguer vos applications et vous assurer qu’elles sont dépourvues d’erreurs et d’avertissements. La couche de débogage vous aide à écrire du code Direct3D 12. En outre, votre productivité peut augmenter lorsque vous utilisez la couche de débogage, car vous pouvez immédiatement voir les causes des erreurs de rendu obscur ou d'écrans noirs à leur source. La couche de débogage fournit des avertissements pour de nombreux problèmes. Par exemple :

  • Vous avez oublié de définir une texture, mais vous la lisez dans votre nuanceur de pixels.
  • Profondeur de sortie, mais sans liaison d’état du stencil de profondeur.
  • Échec de la création de texture avec INVALIDARG.

Configurez l'option define D3DCOMPILE_DEBUG du compilateur afin d'indiquer au compilateur HLSL d’inclure des informations de débogage dans l’objet blob du nuanceur.

#define D3DCOMPILE_DEBUG 1

Pour plus d’informations sur toutes les interfaces et méthodes de débogage, reportez-vous à la Référence de la couche de débogage.

Pour plus d’informations sur l’utilisation de la couche de débogage, reportez-vous à la Présentation de la couche de débogage D3D12.

Vidéos éducatives

Il existe un certain nombre de vidéos relatives à Direct3D 12 et Windows 10 dans les didacticiels vidéo éducatifs avancés DirectX, notamment des vidéos sur les outils de débogage graphique et sur la création de rapports de bogues graphiques.

Comprendre Direct3D 12