2015-03-28 5 views
0

Я пытаюсь создать D3D12 устройство, как указано вСоздание Direct3D12 устройства терпит неудачу с E_NOINTERFACE

https://msdn.microsoft.com/en-us/library/dn899120%28v=vs.85%29.aspx

У меня есть NVidia 670 GTX, а для Windows 10 Предварительный просмотр сборки 9926, а в прошлом 10041 окна SDk.

У меня также есть последний бета-драйвер NVidia, системная информация для GeForce сообщает о времени выполнения DirectX12.

Вызов

ID3D12Device* device; 
    HRESULT hr = D3D12CreateDevice(NULL, D3D_DRIVER_TYPE::D3D_DRIVER_TYPE_HARDWARE, 
     D3D12_CREATE_DEVICE_FLAG::D3D12_CREATE_DEVICE_NONE, 
     D3D_FEATURE_LEVEL::D3D_FEATURE_LEVEL_11_0, D3D12_SDK_VERSION, __uuidof(ID3D12Device), (void**)&device); 

Возвращает мне HRESULT с кодом ошибки NOINTERFACE

странно призванием:

ID3D12Object* device; 
    HRESULT hr = D3D12CreateDevice(NULL, D3D_DRIVER_TYPE::D3D_DRIVER_TYPE_HARDWARE, 
     D3D12_CREATE_DEVICE_FLAG::D3D12_CREATE_DEVICE_NONE, 
     D3D_FEATURE_LEVEL::D3D_FEATURE_LEVEL_11_0, D3D12_SDK_VERSION, __uuidof(ID3D12Object), (void**)&device); 

возвращает мне правильный объект, но я не в состоянии использовать QueryInterface для после этого получить действительный объект устройства.

Обратите внимание: я уже пробовал использовать LoadLibrary/GetProcAddress вместо использования заголовков d3d12, который возвращает тот же код ошибки.

+0

обновление до Win10 Build 10041 и повторите попытку. – magicandre1981

+0

Ах, да, забыл был на медленном пути обновления Windows, спасибо, вы можете выразить это как ответ, и я соглашусь с ним. – catflier

+0

ОК, я сделал это. – magicandre1981

ответ

3

Вы всегда должны использовать одну и ту же ОС и SDK Build, потому что API-интерфейсы могут изменять сборки betweens. Поскольку вы используете SDK для сборки 10041, вы также должны обновить Windows 10 до сборки 10041. Откройте приложение «Настройки» и выполните поиск новой сборки Windows 10 и установите ее.