一、获取
D3D11CreateDevice 或 D3D11CreateDeviceAndSwapChain ---ppDevice 传NULL
-or-
ID3D11Device::GetFeatureLevel
二、检查上一步返回的D3D_FEATURE_LEVEL值
// 注:存在Direct3D 11.1运行时, pFeatureLevels设置为NULL,则不会创建D3D_FEATURE_LEVEL_11_1设备
// 创建D3D_FEATURE_LEVEL_11_1设备,必须显示包含D3D_FEATURE_LEVEL_11_1和D3D_FEATURE_LEVEL
// 在未安装DirectX 11.1的机器上,包含D3D_FEATURE_LEVEL_11_1和D3D_FEATURE_LEVEL,会直接返回失败
三、示例
HRAESULT hr = E_FATL;
D3D_FEATURE_LEVEL MaxSupportedFeatureLevel = D3D_FEATURE_LEVEL_9_1;
D3D_FEATURE_LEVEL FeatureLevels[] = {
D3D_FEATURE_LEVEL_11_1,
D3D_FEATURE_LEVEL_11_0,
D3D_FEATURE_LEVEL_10_1,
D3D_FEATURE_LEVEL_10_0,
D3D_FEATURE_LEVEL_9_3,
D3D_FEATURE_LEVEL_9_2,
D3D_FEATURE_LEVEL_9_1
};
hr = D3D11CreateDevice ( NULL,
D3D_DRIVER_TYPE_HARDWARE,
NULL,
0,
&FeatureLevels,
ARRAYSIZE(FeatureLevels),
D3D11_SDK_VERSION,
NULL,
&MaxSupportedFeatureLevel,
NULL );
if(FAILED(hr))
{
return hr;
}