如何检测Windows 7计算机上的directx版本是11还是11.1?
最好使用.NET语言,也可以通过PInvoke或SharpDX?
答案 0 :(得分:4)
尝试创建具有特定功能级别的设备(以及其他参数)。
在本机代码中(使用D3D11CreateDevice*
函数之一)。如果功能不成功 - 不支持功能级别。为了方便起见,我们通常会传递一系列功能级别,然后,如果设备不是nullptr
,我们可以检查哪一个功能最高:
const D3D_FEATURE_LEVEL arrFeatLevels[] =
{
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,
};
const unsigned int nFeatLevels = _countof(arrFeatLevels);
D3D11CreateDeviceAndSwapChain(..., arrFeatLevels, nFeatLevels, ...,
&m_Device, &featureLevel, &m_Context);
if (m_Device && m_Context)
{
featureLevel // you can access to highest supported feature level here
在SharpDX 中,您需要使用构造函数,它接受特定的功能级别:
Device(DriverType, DeviceCreationFlags, FeatureLevel[])
如果设备创建成功,请检查Device.FeatureLevel
属性。
快乐的编码!
修改强>
我想我误解了你的问题。您询问是否检测到操作系统支持的版本,而不是OS +显卡+驱动程序。支持最大版本的操作系统已预先安装,因此您只需要知道您使用的操作系统:
OS version Version of DX runtime
Windows Vista DirectX 10
Windows Vista SP1/SP2 DirectX 10.1
Windows Vista SP2 DirectX 11.0
Windows 7 DirectX 11.0
Windows 7 SP1 DirectX 11.0
Windows 7 SP1 with KB2670838 DirectX 11.1
Windows 8 / Windows RT DirectX 11.1
Windows 8.1 / Windows RT DirectX 11.2
来源:
您还可以查询d3d11.dll
的版本,并与维基页面上的版本进行比较。
参见: