Direct3D 12 : Ce qu’il faut pour commencer

DirectX 12Bonjour bonjour, je déterre un peu ce blog que j’avais( je l’avoue ) laissé à l’abandon.

Dans ce post, je vais simplement faire un point sur les outils nécessaires pour débuter avec Direct3D 12. Il n’a pas pour but de montrer comment coder, mais surtout comment bien installer son poste avant de démarrer. Je reviendrai plus tard avec d’autres posts pour rentrer plus dans le code.

Les bases : Windows 10 et Visual studio 2015 RC

Il est important de rappeler pour commencer que Direct3D 12 est uniquement disponible pour Windows 10. Actuellement en preview, il est possible de se le procurer en s’inscrivant au programme « insider » (https://insider.windows.com/)

Il vous faudra ensuite télécharger Visual Studio 2015. Pour l’instant uniquement disponible en Release Candidate, mais vous pourrez prochainement vous procurer la version RTM gratuitement avec la Community Edition.

Attention, pendant l’installation tout de même, il faut bien s’assurer de sélectionner les outils de développement de Windows 10 :

install

Dans ces outils, il y aura le SDK Windows 10, qui permettra de faire notamment des applications universelles, mais surtout les headers et la lib d3d12.

Pour plus de confort au niveau du debug, le debogueur graphique de Visual Studio 2015 est désormais compatible avec Direct3D 12. Comme on peut le voir dans l’image suivante, avec les objets D3D12xxxxxx dans les objets mémoires, et la trace d’un ExecuteBundle dans la timeline.

d3d12_debug

Graphic Tools

Contrairement au SDK Windows 8, celui de Windows 10 ne contient pas par défaut le Debug Layer de DirectX. Il s’agit désormais d’une fonctionnalité optionnelle de Windows 10. Il y a deux moyens de l’installer.

Tout d’abord, par les paramètres de Windows 10, en cliquant sur Système, puis Applications installées, puis sur le petit lien (caché) Gérer les fonctionnalités optionnelles. Il suffira ensuite de cliquer sur Ajouter une fonctionnalité et de choisir Outils graphique.

L’autre méthode, est d’exécuter le débogage graphique via Visual Studio. Celui-ci est suffisamment intelligent pour détecter qu’ils ne sont pas installés, et pour vous proposer l’installation automatiquement.

DirectX 12 early access program

Si vous avez un jeu suffisamment avancé, et que vous voulez tester le portage en D3D12, il est possible de rejoindre un programme d’accés anticipé. Ce programme vous permet d’avoir accès aux ressources pour débuter sur D3D12, et également à la communauté pour discuter avec les autres développeurs et l’équipe de développement.

Et sans ?

Malheureusement je n’ai pas été accepté sur ce programme, mais je voulais tout de même commencer à regarder le développement D3D12 de plus prêt. J’ai commencé par lire la version préliminaire de la documentation, que je vous invite à lire d’ailleurs (https://msdn.microsoft.com/en-us/library/windows/desktop/dn903821(v=vs.85).aspx).

Dans cette documentation est fait référence à un header d3dx12.h qui sera « fournit en dehors du SDK ». En cherchant sur internet je n’ai pas réussit à trouver ce fichier. Jusqu’à ce que je tombe sur ce sample : https://code.msdn.microsoft.com/Direct3D-12-UAP-Sample-ecb1779f.

Ce sample est proposé directement par l’équipe DirectX, et il contient ce fameux d3dx12.h (même s’il est pas indispensable il facilite grandement l’écriture). On retrouve, dans cet exemple, le fameux cube multicolore qui tourne sur fond bleu, dans un projet Universal Windows Platform. Il permet de décortiquer les nouveautés Direct3D 12 dans un projet concret.

Conclusion

Je vous rappelle que je reviendrai plus tard avec des exemples de code de Direct3D 12. Mais en attendant j’espère que cet article vous aura servi pour installer tout ce dont vous aurez besoin pour développer sous DirectX 12.

A bientôt !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>