在尝试打开D3D窗口之前,我需要确保我的计算机能够创建它。我该如何做到这一点?
在尝试打开D3D窗口之前,我需要确保我的计算机能够创建它。我该如何做到这一点?
我已经找到了与glxinfo相当的DirectX工具,它叫做dxdiag,由微软提供。该工具可以输出一个XML文件,并包含一个D3dStatus字段(在我的情况下显示为“不可用”)。
实际上,glxinfo会创建一个OpenGL窗口和OpenGL上下文,但从不将其映射到屏幕。必须创建一个OpenGL上下文才能获取所有信息,就像glxinfo所做的那样。
// Determines feature level without creating a device.
D3D_FEATURE_LEVEL determineHighestSupportedFeatureLevel()
{
HRESULT hr = E_FAIL;
D3D_FEATURE_LEVEL FeatureLevel;
hr = D3D11CreateDevice(
nullptr,
D3D_DRIVER_TYPE_HARDWARE,
nullptr,
0,
nullptr,
0,
D3D11_SDK_VERSION,
nullptr,
&FeatureLevel,
nullptr );
if(FAILED(hr))
{
throw std::runtime_exception("Determine the highest supported Direct3D11 feature level failed.");
}
return FeatureLevel;
}