.net 查找DirectX版本

.net 查找DirectX版本,.net,windows-7,directx,sharpdx,.net,Windows 7,Directx,Sharpdx,如何检测windows 7计算机上的directx版本是11还是11.1 最好通过PInvoke或SharpDX使用.NET语言?只需尝试创建具有特定功能级别(以及其他参数)的设备即可 本机代码中的(使用D3D11CreateDevice*函数之一)。如果功能不成功-不支持功能级别。为了方便起见,我们通常会传递一系列功能级别,然后,如果设备不是nullptr,我们可以检查哪一个是受支持的最高级别: const D3D_FEATURE_LEVEL arrFeatLevels[] = {

如何检测windows 7计算机上的directx版本是11还是11.1


最好通过PInvoke或SharpDX使用.NET语言?

只需尝试创建具有特定功能级别(以及其他参数)的设备即可

  • 本机代码中的(使用
    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+图形卡+驱动程序支持。支持的最高版本是随操作系统预装的,因此您只需知道您在哪个操作系统上:

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的版本,并与wiki页面上的版本进行比较。
见:


只需尝试创建具有特定功能级别(以及其他参数)的设备即可

  • 本机代码中的(使用
    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+图形卡+驱动程序支持。支持的最高版本是随操作系统预装的,因此您只需知道您在哪个操作系统上:

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的版本,并与wiki页面上的版本进行比较。
见:


谢谢!有趣的是,它报告了我的Windows7上的D3D_功能级_10_0。这意味着你的图形卡只支持DirectX10@Drop“操作系统预装了支持的最高版本”,“Windows 7 SP1 | DirectX 11.1”不正确,对吗?Win7SP1仍然只预安装DX11.0。DX11.1需要特殊的“平台更新”。来源:.@Peter确实,看起来Windows SP1需要安装更新KB2670838才能获得DirectX 11.1运行时。另见。我将此信息添加到answer@Peter是的,这是设计的。(我在上面“编辑”部分的第二句话中暗示了这一点)。只要操作系统支持,您可以使用任何API版本编写程序,但功能级别(一组您可以实际运行的自定义功能)是由可用API版本、硬件和驱动程序功能(以及可能的其他供应商特定因素)的组合定义的。看:谢谢!有趣的是,它报告了我的Windows7上的D3D_功能级_10_0。这意味着你的图形卡只支持DirectX10@Drop“操作系统预装了支持的最高版本”,“Windows 7 SP1 | DirectX 11.1”不正确,对吗?Win7SP1仍然只预安装DX11.0。DX11.1需要特殊的“平台更新”。来源:.@Peter确实,看起来Windows SP1需要安装更新KB2670838才能获得DirectX 11.1运行时。另见。我将此信息添加到answer@Peter是的,这是设计的。(我在上面“编辑”部分的第二句话中暗示了这一点)。只要操作系统支持,您可以使用任何API版本编写程序,但功能级别(一组您可以实际运行的自定义功能)是由可用API版本、硬件和驱动程序功能(以及可能的其他供应商特定因素)的组合定义的。见: