Сбой приложения Win8 на Win10 (D3D11CreateDevice возвращает ноль)

У меня есть приложение Xamarin Forms, написанное на C # и использующее DirectX Tool Kit с вызовами взаимодействия с C ++.

Это приложение для Windows 8.1, оно отлично работает на Windows 8.1 и работает на моем компьютере с Windows 10.

Но однажды я запустил Visual Studio 2015 и собирался запустить приложение на Windows 10. Оно просто вылетало из ниоткуда. Я думаю, что обновление Windows 10 может быть проблемой?

В любом случае вот код из DirectX Tool Kit для Windows8.1:

ThrowIfFailed(
D3D11CreateDevice(
nullptr,                    // Specify null to use the default adapter.
D3D_DRIVER_TYPE_HARDWARE,
0,
creationFlags,              // Optionally set debug and Direct2D compatibility flags.
featureLevels,              // List of feature levels this app can support.
ARRAYSIZE(featureLevels),
D3D11_SDK_VERSION,          // Always set this to D3D11_SDK_VERSION for Windows Store apps.
&device,                    // Returns the Direct3D device created.
NULL,                       // Returns feature level of device created.
&context                    // Returns the device immediate context.
)
);

// Get D3D11.1 device
ThrowIfFailed(
device.As(&m_d3dDevice)
);

D3D11CreateDevice, кажется, возвращает нуль (устройство и контекст)
И вылет в устройстве. Как (&m_d3dDevice) и сообщение об ошибке говорит о том, что какой-то компонент SDK может отсутствовать.

Кто-нибудь, кто знает, в чем может быть проблема? Должен ли я установить DirectX SDK? Почему я мог запустить приложение раньше?

Спасибо!

1

Решение

Из DirectX TK:
http://directxtk.codeplex.com/workitem/1317

Это связано с тем, что ваши creationFlags имеют вид D3D11_CREATE_DEVICE_DEBUG, что приведет к сбою, если у вас не установлено отладочное устройство Direct3D — это только на компьютерах разработчиков.

Поскольку вы работаете в Windows 10, вероятно, вы были обновлены с одной сборки на другую, что отключает отладочное устройство, поскольку оно устарело. Вы должны снова включить его.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]