2013-04-11 3 views
0

В настоящее время я разрабатываю проект в C#. В этом проекте я использую DirectX API. Теперь я хочу реализовать функцию, чтобы проверить, доступен ли DirectX или нет?Как проверить, доступен ли DirectX?

У вас есть идея, как это сделать?

Благодарим за помощь!

+0

Прочитайте это: http://stackoverflow.com/questions/3255094/minimum-directx-9-0c-version-and-how-to- check-for-it – Andy

+0

Какая версия DirectX и какая ОС вам нужна? Имейте в виду, что DX10 и DX11 в любом случае являются частью Windows 7 и Windows 8. –

+0

Мне нужна версия 9.0c в Windows XPfessional SP 3. Но программное обеспечение можно установить на win xp, выиграть vista и выиграть 7. Поэтому я думаю, что мне нужно проверить более чем одну версию DX. Правильно ли это? – Maxim

ответ

0

Вам нужно определить, есть ли в системе графический процессор, совместимый с DirectX, так что устройство Direct3D9 может быть создано, чего нет в некоторых виртуальных операционных системах и т. Д.? Это можно протестировать просто, создав экземпляр устройства и поймав исключение, которое он, возможно, выбрасывает.

Прямая установка самой установки DirectX может быть проверена путем поиска в папке Windows \ System32. Например, проверьте d3d9d.dll и D3DX9_43.dll.

+0

Спасибо за ваш ответ. Тест на создание экземпляра устройства - хорошая идея. Вы также можете проверить версию DirectX, выполнив «dxdiag». – Maxim

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(); 
    } 
Смежные вопросы