2017-03-05 96 views
1

根據IDXGIAdapter::CheckInterfaceSupport documentation返回S_OK如果傳入的接口是支持的,否則返回DXGI_ERROR_UNSUPPORTED。代碼片段:IDXGISwapChain :: CheckInterfaceSupport返回的結果不能爲

for(size_t i = 0; i < GInterface::m_Adapters.size(); i++) 
{ 
    hr = GInterface::m_Adapters.at(i)->CheckInterfaceSupport(__uuidof(ID3D11Device), (LARGE_INTEGER*)&umdVersion); 
    printf("***D3D11 %sSUPPORTED FOR ADAPTER %d (%d)", 
      (hr != DXGI_ERROR_UNSUPPORTED) ? "" : "NOT ", 
      i, 
      umdVersion); 
} 

控制檯始終打印NOT,但如果我更改爲__uuidof(ID3D10Device)事實並非如此。
但我肯定知道,我的GPU支持DirectX11的,因爲:

  1. 的PROGRAMM我目前正在寫使用DirectX 11以及它的運行
  2. 我的GPU:GTX 970,而不是最新的,但...是的,應支持D3D11:d

可以請別人清楚的事情了,我稍微惱火,謝謝。

回答

1

在「備註」部分的IDXGIAdapter:CheckInterfaceSupport(重點煤礦):

注意您可以使用CheckInterfaceSupport只檢查 Direct3D的10.x的接口是否被支持,且僅適用於Windows Vista SP1的 和更高版本的操作系統。 如果您嘗試使用 CheckInterfaceSupport檢查是否支持Direct3D 11.x及更高版本 版本接口,CheckInterfaceSupport返回 DXGI_ERROR_UNSUPPORTED。因此,請勿使用CheckInterfaceSupport。 相反,要驗證操作系統是否支持特定的接口,請嘗試創建該接口。例如,如果您調用 ID3D11Device :: CreateBlendState方法並且失敗,則操作 系統不支持ID3D11BlendState接口。

+1

我有一本名爲DirectX 11遊戲編程入門書,它正是那個練習......所以我沒有仔細檢查它。謝謝 – MisterRecursion

+0

如果解決了這個問題,請將其標記爲已接受的答案。 – MuertoExcobito

+0

是的,對不起,我的瀏覽器之前有一個awkard錯誤消息,然後我忘記了,sry。 – MisterRecursion