Образец DirectX с использованием DXUT Не удалось создать устройство Direct3D (только отладка)

Довольно странная проблема, с которой я столкнулся, я пытаюсь запустить учебные пособия по DXUT DirectX 10/11 из примера браузера DirectX. Они работают нормально, но не могут быть запущены в режиме отладки, так как это вызывает предупреждение об ошибке "Не удалось создать устройство Direct3D". Это странно, так как я могу запустить их в режиме релиза. Однако самое странное, что они работают в режиме отладки, и я клянусь, я ничего не менял в тот день, когда он работал, и на следующий день, когда он этого не делал. У друга тоже есть та же самая проблема, которая произошла примерно в то же время.

Кто-нибудь сталкивался с этой проблемой и знал о решении, или, возможно, знает, почему это происходит за гранью очевидного, у меня есть карта с поддержкой DirectX 11, если вы ее не взяли.

Благодарю.

3 ответа

Я буквально провел весь день, пытаясь решить эту проблему. Вот решение, которое, надеюсь, должно исправить и ваше...

Мне удалось найти эту статью, объясняющую, что недавнее обновление (26 февраля 2013 года, если быть точным) вызвало сбой старой версии:

http://blogs.msdn.com/b/chuckw/archive/2013/02/26/directx-11-1-and-windows-7-update.aspx

Это объясняет, почему несколько недель назад все работало нормально, а теперь вдруг перестало работать.

Следуя их советам, я скачал пробную версию Visual Studio 2012, и после полутора часов времени установки и перезагрузки системы у вас должны появиться все новые файлы DirectX SDK, которые вам нужны.

ПРИМЕЧАНИЕ. Вам даже не нужно использовать Visual Studio 2012. Новые файлы должны исправить ваши проблемы с Visual Studio 2010 и более ранними версиями, я полагаю!

(Перед этим я также установил все последние версии драйверов, но я не думаю, что это чем-то помогло, но стоит обновлять драйверы всякий раз, когда вы можете, так как это исправило аналогичную проблему, которая была у меня раньше).

Надеюсь это поможет!!!:)

Где-то в вашем коде вы, вероятно, что-то вроде этого

#if defined(DEBUG) || defined(_DEBUG)  
    createDeviceFlags |= D3D10_CREATE_DEVICE_DEBUG;
#endif

Если вы посмотрите на D3D10_CREATE_DEVICE_DEBUG; на MSDN вы увидите это

Чтобы использовать этот флаг, у вас должен быть установлен D3D11_1SDKLayers.dll; в противном случае создание устройства завершится неудачно.

Вы должны проверить, что у вас есть это dll в вашей системе или вам следует переустановить DirectX SDK.

Из-за автоматического обновления IE10 у меня возникла проблема с автоматической не поддержкой DirectX-разработки. Самым простым решением является загрузка автономной Win8 SDK на...

http://msdn.microsoft.com/en-us/windows/desktop/hh852363

Уровень DLL отладки DirectX должен быть обновлен.

Другие вопросы по тегам