Loupe

AccessViolationException sur le D3D11_CREATE_DEVICE en Debug

Si vous utilisiez DirectX dans une application Windows 8.1, peut-être avez-vous eu affaire à une AccessViolationException lorsque vous avez voulu recompiler ce même projet sur Windows 10. Si votre code référençait un D3D11_CREATE_DEVICE_DEBUG alors vous êtes sur le bon post.

clip_image001

Si vous ne touchez à rien, le code compilera sans problème en Release avec D3D11_CREATE_DEVICE_BGRA_SUPPORT mais si vous passez en Release avec D3D11_CREATE_DEVICE_DEBUG, alors là le code ne fonctionnera pas. Le problème vient du fait qu'il vous faut installer les Graphics Diagnostics Tools pour activer le DirectX Debug Layer sur votre machine : Start > Settings > System > Optional Features > Add a feature > Graphics Tools.

clip_image002

Cependant, si vous êtes sur Windows Enterprise vous pourriez n'avoir aucune feature listée dans la page. Pour remédier au problème, il faudra passer par le registre et changer la clé UseWUServer à 0 :

Regedit > HKEY_LOCAL_MACHINE > SOFTWARE > POLICIES > MICROSOFT > WINDOWS > WindowsUpdate > AU > UseWUServer.

clip_image003

Normalement après avoir redémarré votre PC vous devriez obtenir la liste de toutes les features disponibles pour votre machine et ainsi installer les Graphics Tools.

clip_image004

 

Relancez votre application, et hop ça refonctionne !

 

Eventuellement, si vous ne voulez pas installer les Graphics Tools et juste lancer l'application en Debug, vous pouvez rajouter une condition en debug permettant d’utiliser D3D11_CREATE_DEVICE_BGRA_SUPPORT dans le cas où D3D11_CREATE_DEVICE_DEBUG renvoie une valeur incorrecte.

Ces billets pourraient aussi vous intéresser

Vous nous direz ?!

Commentaires

comments powered by Disqus