Перестали работать некоторые OpenGL приложения и игры, ссылаясь на то, что OpenGL не поддерживается системой. Те, что запускаются, работают очень медленно. Что произошло?

  1. В драйверах для видеокарт NVIDIA, поставляемых в составе операционной системы Windows, поддержка OpenGL обычно отсутствует. Приложения будут использовать программный рендеринг Windows OpenGL (враппер в Direct3D в Windows Vista). Проверить наличие в системе драйвера OpenGL можно с помощью утилит OpenGL Extensions Viewer и GPU Caps Viewer. Если они показывают, что поставщик OpenGL — Microsoft, значит в системе нет драйвера OpenGL. Загрузите и установите последнюю версию драйвера для видеокарты с сайта NVIDIA.
  2. В новой версии драйвера могла быть добавлена поддержка новой версии API OpenGL, неизвестная приложению. Например, драйвер сообщает приложениях о поддержке OpenGL версии 2.0, а приложение/игра проверяет поддержку версии OpenGL в формате 1.Х. Для решения проблемы можно с помощью RivaTuner в настройках OpenGL на закладке «Совместимость» (Compatibility) форсировать сообщаемое драйвером значение версии OpenGL (OpenGL version string override) на поддерживаемую приложением, например на 1.5. Эта опция не влияет на исполнение OpenGL видеокартой, но по той же причине могут перестать работать приложения, требующие OpenGL версии 2.0. Более гибкий способ — создать для проблемного приложения профиль драйвера с помощью утилиты nHancer, указав нужную версию в опции «Reported OpenGL Version» на закладке «Compatibility».
  3. Проблема может возникать, если в системе по какой-либо причине установлены несколько драйверов OpenGL. В реестре по адресу HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\OpenGLDrivers (HKLM\Software\Microsoft\Windows\CurrentVersion\OpenGLdrivers для Windows 9x-ME) проверьте, что имеется единственный подраздел RIVATNT и ключ Dll в этом разделе имеет значение nvoglnt (имеется единственный ключ со значением nvopengl.dll для Windows 9x-ME). Если имеются иные подразделы, например ati2dvag (OpenGL драйвер ATI), их следует удалить, предварительно экспортировав в файл .reg.
  4. Реализация OpenGL 2.0 для графических процессоров GeForce FX и выше в драйвере NVIDIA требует поддержки центральным процессором расширений SSE. Если эти расширения недоступны, драйвер OpenGL ICD не будет инициализирован, OpenGL приложения будут закрываться или будет использован программный рендеринг. Проверить инициализацию драйвера можно с помощью утилит OpenGL Extensions Viewer и GPU Caps Viewer, проверить поддерживаемые процессором расширения можно с помощью утилит CPU-Z или Sandra. Если процессор не поддерживает SSE, можно или использовать более ранние версии драйвера (до 75.ХХ), или с помощью RivaTuner в настройках OpenGL на закладке «Совместимость» (Compatibility) включить режим «NV25 Emulation mode» вместо стоящего по-умолчанию «Max acceleration». В крайнем случае можно воспользоваться OpenGL->Direct3D враппером GLDirect или TitaniumGL. Иногда процессор поддерживает SSE, но поддержка не работает из-за устаревшего BIOS материнской платы. Особенно данная проблема характерна для систем с процессорами AMD Athlon XP и Duron. Обновление BIOS материнской платы может восстановить поддержку SSE.
  5. Если в системе есть несколько видеокарт на базе разных графических процессоров NVIDIA, то OpenGL драйвер будет поддерживать лишь OpenGL поддерживаемой всеми видеокартами версии.
+14

Комментарии

  • Ilkhom Aliev

    помогите

  • Андрей Выдра

    А если в риестре у меня нету конечного файла (пункт 2 в вашей статье"

    • Андрей Выдра

      пункт 3вернее