.net 查找DirectX版本
如何检测windows 7计算机上的directx版本是11还是11.1.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[] = {
最好通过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 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版本、硬件和驱动程序功能(以及可能的其他供应商特定因素)的组合定义的。见: