IDXGISwapChain :: CheckInterfaceSupport返回的结果不能是

时间:2017-03-05 23:17:47

标签: c++ c++11 directx directx-11

根据IDXGIAdapter::CheckInterfaceSupport documentation返回S_OK,如果支持传入的接口,则为DXGI_ERROR_UNSUPPORTED。代码段:

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. 我目前正在编写的程序正在使用DirectX 11并且正在运行
  2. 我的GPU:GTX 970,不是最新的,但......是的,应该支持D3D11:D
  3. 可以请有人清楚我有点恼火,谢谢。

1 个答案:

答案 0 :(得分:1)

在&#39;备注&#39; IDXGIAdapter:CheckInterfaceSupport(强调我的)部分:

  

注意您只能使用CheckInterfaceSupport来检查是否   支持Direct3D 10.x接口,仅适用于Windows Vista SP1   和更高版本的操作系统。 如果您尝试使用   CheckInterfaceSupport检查Direct3D 11.x及更高版本   支持版本界面,CheckInterfaceSupport返回   DXGI_ERROR_UNSUPPORTED 即可。因此,请勿使用CheckInterfaceSupport。   相反,要验证操作系统是否支持特定的操作系统   界面,尝试创建界面。例如,如果你打电话给   ID3D11Device :: CreateBlendState方法,它失败了,操作   系统不支持ID3D11BlendState接口。