2017-03-05 98 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