2015-09-27 7 views
19

In meinen D3D 11 Projekten, füge ich immerVerwenden D3D11 Debug-Schicht mit VS2013 auf Windows 10

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

auf den Geräteerstellungsflags Debug-Ausgabe zu ermöglichen. Seit ich auf Windows 10 aufgerüstet habe, funktioniert das nicht mehr. Das Gerät kann nicht erstellt werden mit der folgenden Ausgabe:

D3D11CreateDevice: Flaggen (0x2) wurden, die die D3D11 SDK Layer für Windows 10, aber sie sind nicht auf dem System vorhanden erfordern angegeben. Diese Flags müssen entfernt werden oder das Windows 10 SDK muss installiert sein. Flags sind: D3D11_CREATE_DEVICE_DEBUG

Allerdings kann ich nicht die 10 SDK von Windows verwenden, noch kann ich das Projekt von VS2013 auf VS 2015 atm aktualisieren. Gibt es eine Möglichkeit, dieses Problem zu beheben, dh kann ich die D3D11 Debug-Ebene unter Windows 10 mit VS2013 aktivieren?

Antwort

40

Die Debug-Nachricht ist ein wenig irreführend. Unter Windows 10 installiert das Windows SDK die Direct3D-Debugschicht nicht mehr. Stattdessen müssen Sie ein optionales Windows-Feature namens "Grafik-Tools" aktivieren, das die Debug-Ebene enthält. Die Installation von VS 2015 und Windows 10 SDK unter Windows 10 sollte diese Funktion ebenfalls automatisch aktivieren, Sie können dies jedoch direkt tun.

(a) Einstellungen Panel -> System -> Apps & Funktionen -> optional Funktionen verwalten -> eine Funktion hinzufügen -> Wählen Sie "Grafiken Werkzeuge"

(b) von einer Admin-Eingabeaufforderung:

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

Siehe this post.

Hinweis: Wenn Sie von Windows 10 (10240) auf das Update vom November 2015 (10586) aktualisieren, müssen Sie möglicherweise die optionale Funktion Graphics Tools erneut aktivieren.

+0

Für Systeme mit UseWUServer auf 1 gesetzt (siehe [hier] (https://answers.microsoft.com/en-us/windows/forum/windows_10-other_settings-winpc/windows-10-optional-features- fehlt/c9555e72-11ed-416a-bc65-1a8372fc27ab? auth = 1)), Chucks Antwort [hier] (https://stackoverflow.com/a/34347665/2274765) kann funktionieren, wenn dieser Ansatz nicht funktioniert. –