2017-10-09 96 views
-2
  1. 我有問題,有錯誤無法創建的DirectX設備和Swapchain

    if (FAILED(D3D11CreateDeviceAndSwapChain(
        nullptr, 
        D3D_DRIVER_TYPE_HARDWARE, 
        nullptr, 
        createFlags, 
        requestedLevels, 
        sizeof(requestedLevels)/sizeof(D3D_FEATURE_LEVEL), 
        D3D11_SDK_VERSION, 
        &scd, 
        &pSwapChain, 
        &pDevice, 
        &obtainedLevel, 
        &pContext))) 
    { 
        MessageBox(hWnd, "Failed to create directX device and swapchain!", 
         "Error", MB_ICONERROR); 
        return NULL; 
    } 
    

消息顯示截至任何時候都使用該.dll文件

我重新安裝DirectX和Nvidia公司驅動程序。 下一步是什麼? (其他電腦工作正常)

+0

什麼是請求的功能級別,創建標誌,交換鏈的描述等。您沒有發佈足夠的代碼以及D3D11CreateDeviceAndSwapChain返回什麼類型的HRESULT值? – Asesh

+0

https://pastebin.com/4hMvjhP5 –

+0

你可以編輯你的帖子嗎?就像我說的你沒有發佈足夠的代碼 – Asesh

回答

1

最可能的原因是您已設置D3D11_CREATE_DEVICE_DEBUG創建標誌,但系統未安裝Direct3D調試設備。運行legacy DirectX SDK無法在Windows 7 SP1上使用DirectX 11.1或更高版本來獲取開發人員運行時。

如上評論指出的那樣,HRESULT值你從這個函數返回會給一個提示,原因,但你在你的代碼片段無法輸出。

您在系統上獲取調試設備的方式取決於您正在運行的操作系統。完整列表請參見this post。例如,如果您運行的是Windows 10,則沒有SDK會安裝它,而是必須啓用圖形工具「Feature On Demand」。

其他可能在這裏的原因是:

  • 有您的系統上沒有設備支持您requestedLevelsDirect3D Hardware Feature levels

  • 您已經通過一些無效的輸入參數集合到該設備或列表交換鏈創建 - 另一個使用更現代的創建獨立於設備創建的交換鏈的方法的原因。 請注意,D3D11CreateDeviceAndSwapChain是一個傳統功能,因此您用作教程的任何材料都可能已過時。見Anatomy of Direct3D 11 Create Device

如果你是新來的DirectX開發,我建議採取看看DirectX Tool Kit tutorials

相關問題