2015-11-09 2 views
0

Я следую руководству DirectX 11 Series 2 по адресу rastertek.com. В настоящее время я нахожусь в Tutorial 3 (Initializing DirectX), и по какой-то причине функция CreateDeviceAndSwapChain продолжает сбой при запуске программы. Я выполнил шаги по связыванию библиотек SDK Windows 10 и включил в проект здесь (rastertek.com/dx12tut01.html), а мой GPU - Nvidia 780 Ti. Я также попробовал его предварительно скомпилированный файл .exe, и это работает отлично. В чем проблема? Дайте мне знать, нужны ли скриншоты!Не удалось инициализировать Direct3D VS 2015 (Win 10)

//enable debug mode 
UINT flags = D3D11_CREATE_DEVICE_BGRA_SUPPORT; 

#if defined(DEBUG) || defined(_DEBUG) 
flags |= D3D11_CREATE_DEVICE_DEBUG; 
#endif 

//create the swap chain, d3d device, and d3d device context 
result = D3D11CreateDeviceAndSwapChain(NULL, D3D_DRIVER_TYPE_HARDWARE, NULL, flags, &featureLevel, 1, D3D11_SDK_VERSION, &swapChainDesc, &m_swapChain, &m_device, NULL, &m_deviceContext); 
if (FAILED(result)) { 
    return false; 
} 
+1

Успешно ли это, если вы удалите флаг D3D11_CREATE_DEVICE_DEBUG? Если это так, это означает, что у вас нет SDK Layers, а также «Инструменты графики», установленные из «Дополнительные функции» Windows 10. –

+0

Как замечает Адам, скорее всего, вам не хватает поддержки устройства отладки для вашей версии Windows. См. [Где находится версия DirectX SDK (версия 2015 г.)?] (Http://blogs.msdn.com/b/chuckw/archive/2015/08/05/where-is-the-directx-sdk-2015-edition. aspx) и [это сообщение в блоге] (http://blogs.msdn.com/b/vcblog/archive/2015/03/31/visual-studio-2015-and-graphics-tools-for-windows-10.aspx). –

+0

У меня была аналогичная проблема, я просто включил «графические инструменты» в Win10. Дополнительные функции, такие как @AdamMiles, это правильный ответ –

ответ

0

Ну, в моем случае, у меня есть ноутбук с Intel HD 4400 и GeForce 840m (с использованием win10 + Visual Studio 2015), и я поставил featureLevel 11.1 вручную, оказалось, что Intel поддерживает этот уровень функции , но geforce поддерживает максимум 11,0. В любом случае, до сих пор неясно, в чем ваша проблема, какое сообщение об ошибке или что-то еще, чтобы вы могли попробовать более низкий уровень функции, передать 0 в качестве флагов.