Walk-Throughs de code D3D12
Cette section fournit du code pour des exemples de scénarios. La plupart des procédures pas à pas fournissent des détails sur le codage à ajouter à un exemple de base, afin d’éviter de répéter le code de composant de base pour chaque scénario.
Pour le composant le plus simple, reportez-vous à la section Création d’un composant Direct3D 12 de base . Les procédures pas à pas suivantes décrivent des scénarios plus avancés.
Contenu de cette section
Rubrique | Description |
---|---|
D2D à l’aide de D3D11on12 |
L’exemple D3D1211on12 montre comment restituer du contenu D2D sur du contenu D3D12 en partageant des ressources entre un appareil basé sur 11 et un appareil 12. |
Simulation de gravité n-corps multi-moteur |
L’exemple D3D12nBodyGravity montre comment effectuer le travail de calcul de manière asynchrone. L’exemple fait tourner un certain nombre de threads chacun avec une file d’attente de commandes de calcul et planifie le travail de calcul sur le GPU qui effectue une simulation de gravité n-corps. Chaque thread fonctionne sur deux mémoires tampons pleines de données de position et de vitesse. Avec chaque itération, le nuanceur de calcul lit la position actuelle et les données de vélocité d’une mémoire tampon et écrit l’itération suivante dans l’autre mémoire tampon. Une fois l’itération terminée, le nuanceur de calcul permute la mémoire tampon qui est le SRV pour lire les données de position/vélocité et qui est l’UAV pour écrire des mises à jour de position/vélocité en modifiant l’état des ressources sur chaque mémoire tampon. |
Requêtes de prédicat |
L’exemple D3D12PredicationQueries illustre l’occlusion culling à l’aide des segments de requête DirectX 12 et de la prédication. La procédure pas à pas décrit le code supplémentaire nécessaire pour étendre l’exemple HelloConstBuffer pour gérer les requêtes de prédication. |
Indexation dynamique à l’aide de HLSL 5.1 |
L’exemple D3D12DynamicIndexing illustre certaines des nouvelles fonctionnalités HLSL disponibles dans le modèle Shader 5.1 ( en particulier l’indexation dynamique et les tableaux non liés) pour afficher le même maillage plusieurs fois, chaque fois qu’il est rendu avec un matériau sélectionné dynamiquement. Avec l’indexation dynamique, les nuanceurs peuvent désormais indexer dans un tableau sans connaître la valeur de l’index au moment de la compilation. En cas de combinaison avec des tableaux non liés, cela ajoute un autre niveau d’indirection et de flexibilité pour les auteurs de nuanceurs et les pipelines d’art. |
Dessin indirect et élimination du GPU |
L’exemple D3D12ExecuteIndirect montre comment utiliser des commandes indirectes pour dessiner du contenu. Il montre également comment ces commandes peuvent être manipulées sur le GPU dans un nuanceur de calcul avant leur émission. |