如何检查DirectX是否可用?

时间:2013-04-11 12:35:50

标签: c# error-handling directx try-catch direct3d

目前我在C#中开发了一个项目。在这个项目中,我使用DirectX API。现在我想实现一个函数来检查DirectX是否可用?

你知道怎么做吗?

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

您是否需要检测系统中是否存在与DirectX兼容的GPU,以便可以创建Direct3D9设备,某些虚拟操作系统不是这种情况?只需创建一个设备实例并捕获它可能引发的异常即可对其进行测试。

通过查看Windows \ System32文件夹可以检查DirectX安装本身。例如,检查d3d9d.dll和D3DX9_43.dll。

答案 1 :(得分:0)

获取DirectX的另一种方法 - 版本:

    void CheckDirectXMajorVersion()
    {
        int directxMajorVersion = 0;

        var OSVersion = Environment.OSVersion;

        // if Windows Vista or later
        if (OSVersion.Version.Major >= 6)
        {
            // if Windows 7 or later
            if (OSVersion.Version.Major > 6 || OSVersion.Version.Minor >= 1)
            {
                directxMajorVersion = 11;
            }
            // if Windows Vista
            else
            {
                directxMajorVersion = 10;
            }
        }
        // if Windows XP or earlier.
        else
        {
            using (RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\DirectX"))
            {
                string versionStr = key.GetValue("Version") as string;
                if (!string.IsNullOrEmpty(versionStr))
                {
                    var versionComponents = versionStr.Split('.');
                    if (versionComponents.Length > 1)
                    {
                        int directXLevel;
                        if (int.TryParse(versionComponents[1], out directXLevel))
                        {
                            directxMajorVersion = directXLevel;
                        }
                    }
                }
            }
        }

        Console.WriteLine("DirectX Version: " + directxMajorVersion.ToString());

        Console.ReadKey();
    }