Find out DirectX Version

故事扮演 提交于 2019-12-07 08:25:30
Ivan Aksamentov - Drop

Just try to create a device with a specific feature level (along with other parameters).

  • In native code (use one of the D3D11CreateDevice* functions) . If function will not succeed - feature level is not supported. To make it easier, we usually pass array of feature levels, and then, if device is not nullptr, we can check which one is highest supported:

    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
    
  • In SharpDX you will need to use constructor, which accepts specific feature levels:

    Device(DriverType, DeviceCreationFlags, FeatureLevel[])
    

    if device creation succeeded, then check Device.FeatureLevel property.

Happy coding!

Edit

I think I misinterpret your question. You asked about detecting of which version is supported by OS, not by OS + graphics card + driver all together. Maximum supported version are preinstalled with OS, so you only need to know which OS are you on:

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

sources:

You can also query version of d3d11.dll and compare with those which are on wiki page. See:

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!