2017-01-21 6 views
0

J'ai donc commencé à me familiariser avec le langage C++ et DirectX 11. Principalement parce qu'une énorme ressource à apprendre est disponible.Initialisation de l'échec Direct3D dans le tutoriel rastertek

Le tutoriel peut être trouvé ici http://www.rastertek.com/dx11tut03.html

Le problème est que DirectX 11 programmes Visual Studio 2010 ne fonctionnent pas vraiment, le processus d'initialisation retourne false

Mon problème est assez simple. Il n'initialise pas le Direct3D, pas d'erreurs, il n'obtient pas que le booléen soit égal à vrai. Le téléchargement de la solution se traduira par la même chose. Le code d'initialisation complet est long de plus de 100 lignes, mais il effectue toutes les vérifications que vous pouvez voir dans la page du tutoriel.

j'ai rencontré que les pilotes peuvent avoir le problème et trouvé ceci: So there's one thing we can notice, the DDI is 10 instead of 11

est donc ce problème que je pourrais avoir qui ne laisse pas Direct X 11 à courir, et comment résoudre ce problème?

Nous vous remercions de votre aide.

+0

* "Est-il possible que je manque quelque chose de vraiment vital?" * - Oui, un [mcve]. – IInspectable

+0

Le code peut être trouvé dans le lien et le mien est 1: 1 avec lui. Donc, le tutoriel ne mentionne vraiment rien à propos de ce problème, il s'attend à ce qu'il n'y ait pas d'échec. Mais qu'est-ce qui le cause? –

+0

Le tutoriel n'est certainement pas * "minimal" *, et les questions ici ne sont pas censées être liées au contenu hors site, si cela est vital pour la question. – IInspectable

Répondre

2

Ceci est en fait appelé spécifiquement dans le tutoriel:

// Set the feature level to DirectX 11. 
featureLevel = D3D_FEATURE_LEVEL_11_0; 

Notez que si l'utilisateur ne dispose pas d'une carte vidéo DirectX 11 cet appel de fonction ne parviendra pas à créer le contexte de l'appareil et le dispositif. De même, si vous testez directement la fonctionnalité DirectX 11 et que vous n'avez pas de carte vidéo DirectX 11, vous pouvez remplacer D3D_DRIVER_TYPE_HARDWARE par D3D_DRIVER_TYPE_REFERENCE et DirectX utilisera votre CPU pour dessiner à la place du matériel de la carte vidéo. Notez que cela tourne 1/1000 la vitesse mais c'est bon pour les gens qui n'ont pas encore de cartes vidéo DirectX 11 sur toutes leurs machines.

// Create the swap chain, Direct3D device, and Direct3D device context. 
result = D3D11CreateDeviceAndSwapChain(NULL, D3D_DRIVER_TYPE_HARDWARE, NULL, 0, &featureLevel, 1, 
         D3D11_SDK_VERSION, &swapChainDesc, &m_swapChain, &m_device, NULL, &m_deviceContext); 
if(FAILED(result)) 
{ 
    return false; 
} 

Depuis votre dxdiag montre que vous avez 10.0, vous ne pouvez pas utiliser D3D_FEATURE_LEVEL_11_0 avec le matériel. Comme les tutoriels rastertek sont un peu datés, ils ne mentionnent pas que vous pouvez utiliser D3D_FEATURE_LEVEL_10_0 ou D3D_DRIVER_TYPE_WARP (un pilote logiciel plus lent que le matériel mais beaucoup plus rapide que l'ancien pilote de référence).

Voir Direct3D Feature Levels et Anatomy of Direct3D 11 Create Device.

Les tutoriels rastertek sont utiles, mais ils sont anciens. En particulier, ils utilisent beaucoup de deprecated contenu du legacy DirectX SDK. Je vous recommande de mettre à jour à la place à une version plus récente de Visual Studio (peut-être le Community edition) et d'utiliser le DirectX Tool Kit tutorial. Une fois que vous avez maîtrisé ce contenu, vous pouvez revenir aux tutoriels rastertek.

+0

Merci pour l'information, je vérifiais la chose et j'ai décidé de travailler avec Direct X 10 à la place, car la vitesse compte pour un PC comme le mien. Je pense que je mettrai à jour à VS plus récent quand j'achèterai un nouvel ordinateur portable, il va gâcher mes projets actuels et le flux que je suis en ce moment. –

+0

Vous n'avez pas besoin d'utiliser l'API DirectX 10 et vous ne devriez pas. C'est obsolète et aucun nouveau programme ne devrait l'utiliser. L'API DirectX 11 prend en charge * plus * matériel que DirectX 10 et a exactement la même performance ou mieux. Le problème est les didacticiels que vous utilisez qui sont construits en supposant que vous avez une carte vidéo '' D3D_FEATURE_LEVEL_11_0'' ou mieux. Les didacticiels _DirectX Tool Kit_ fonctionneront sur le matériel Direct3D Feature Level 9.3 ou supérieur. –

+0

Puis-je les suivre Code :: Blocks ou VS2010 car je ne veux pas remplir plus de mémoire et passer plus de temps à changer l'IDE –