2015-09-27 31 views
19

Trong D3D 11 dự án của tôi, tôi luôn luôn thêmSử dụng D3D11 debug lớp với VS2013 trên Windows 10

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

đến cờ sáng tạo thiết bị cho phép kết xuất debug. Kể từ khi tôi nâng cấp lên Windows 10, điều này không làm việc nữa. Việc tạo thiết bị không thành công với đầu ra sau:

D3D11CreateDevice: Cờ (0x2) được chỉ định yêu cầu D3D11 SDK Layers cho Windows 10, nhưng chúng không có trên hệ thống. Các cờ này phải bị xóa hoặc phải cài đặt Windows 10 SDK. Cờ bao gồm: D3D11_CREATE_DEVICE_DEBUG

Tuy nhiên, tôi không thể sử dụng SDK Windows 10 hay tôi có thể nâng cấp dự án từ VS2013 lên VS 2015 atm. Có cách nào để giải quyết vấn đề này, tức là tôi có thể kích hoạt lớp gỡ lỗi D3D11 trên Windows 10 với VS2013?

Trả lời

40

Thông báo gỡ lỗi có chút gây hiểu lầm. Đối với Windows 10, Windows SDK không còn cài đặt lớp gỡ lỗi Direct3D nữa. Thay vào đó, bạn cần phải kích hoạt tính năng tùy chọn của Windows có tên là "Công cụ đồ họa" bao gồm lớp gỡ lỗi. Cài đặt VS 2015 và Windows 10 SDK trên Windows 10 cũng sẽ tự động bật tính năng này, nhưng bạn có thể thực hiện trực tiếp.

(a) bảng điều khiển Settings -> System -> Ứng dụng & tính năng -> Quản lý tính năng tùy chọn -> Thêm một tính năng -> Chọn "Graphics Tools"

(b) từ một quản trị dòng lệnh nhắc nhở:

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

Xem this post.

Lưu ý rằng khi bạn nâng cấp từ Windows 10 (10240) lên bản cập nhật tháng 11 năm 2015 (10586), bạn có thể cần phải bật lại tính năng tùy chọn Công cụ đồ họa.

+0

Đối với các hệ thống có UseWUServer được đặt thành 1 (xem [tại đây] (https://answers.microsoft.com/en-us/windows/forum/windows_10-other_settings-winpc/windows-10-optional-features- mất tích/c9555e72-11ed-416a-bc65-1a8372fc27ab? auth = 1)), câu trả lời của Chuck [ở đây] (https://stackoverflow.com/a/34347665/2274765) có thể hoạt động nếu cách tiếp cận này không. –

Các vấn đề liên quan