2015-09-27 18 views
19

Nei miei D3D 11 progetti, ho sempre aggiungereUsa D3D11 strato di debug con VS2013 su Windows 10

#if (defined(DEBUG) || defined(_DEBUG)) 
deviceFlags |= D3D11_CREATE_DEVICE_DEBUG; 
#endif /* (defined(DEBUG) || defined(_DEBUG)) */ 

alle bandiere di creazione del dispositivo per abilitare l'output di debug. Da quando ho aggiornato a Windows 10, questo non funziona più. La creazione dispositivo non riesce con il seguente output:

D3D11CreateDevice: Flags (0x2) sono stati specificati che richiedono Livelli D3D11 SDK per Windows 10, ma non sono presenti nel sistema. Questi flag devono essere rimossi oppure è necessario installare l'SDK di Windows 10. Flags includono: D3D11_CREATE_DEVICE_DEBUG

Tuttavia, non posso utilizzare l'SDK di Windows 10 né posso aggiornare il progetto da VS2013 a VS 2015 atm. C'è un modo per risolvere questo problema, cioè posso abilitare il livello di debug D3D11 su Windows 10 con VS2013?

risposta

40

Il messaggio di debug è un po 'fuorviante. Per Windows 10, Windows SDK non installa più il livello di debug di Direct3D. Invece, è necessario abilitare una funzionalità opzionale di Windows chiamata "Strumenti grafici" che include il livello di debug. Installare VS 2015 e l'SDK di Windows 10 su Windows 10 dovrebbe abilitare automaticamente anche questa funzione, ma è possibile farlo direttamente.

(a) pannello Impostazioni -> Sistema -> Applicazioni & caratteristiche -> Gestisci caratteristiche opzionali -> Aggiungi una caratteristica -> Selezionare "grafica Strumenti"

(b) da un prompt di comandi admin:

Dism /online /add-capability /capabilityname:Tools.Graphics.DirectX~~~~0.0.1.0 

Vedere this post.

Si noti che quando si esegue l'aggiornamento da Windows 10 (10240) all'aggiornamento di novembre 2015 (10586), potrebbe essere necessario riattivare la funzione opzionale di Graphics Tools.

+0

Per sistemi con UseWUServer impostati a 1 (si veda [qui] (https://answers.microsoft.com/en-us/windows/forum/windows_10-other_settings-winpc/windows-10-optional-features- mancante/c9555e72-11ed-416a-bc65-1a8372fc27ab? auth = 1)), la risposta di Chuck [qui] (https://stackoverflow.com/a/34347665/2274765) può funzionare se questo approccio non lo fa. –