根据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,因为:
可以请有人清楚我有点恼火,谢谢。
答案 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接口。