Higan сообщает, что OpenGL 3.2 недоступен, но у меня должна быть версия 3.3.

Вопрос или проблема

Я запускаю Trusty с использованием gnome в crouton на Toshiba Chromebook 2. Я установил higan, и он сообщает: “Ошибка: OpenGL 3.2 недоступен.” Я погуглил это, и, судя по всему, проблема может быть связана с каким-то странным способом, которым OpenGL сообщает о своей версии, отличая “версию” и “версию профиль ядра”. Я понятия не имею, что это значит.

Вот моя glxinfo и пакеты, связанные с mesa. Пожалуйста, дайте знать, если потребуется дополнительная информация.

$ glxinfo | grep OpenGL:

OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) Bay Trail
OpenGL core profile version string: 3.3 (Core Profile) Mesa 10.1.3
OpenGL core profile shading language version string: 3.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 3.0 Mesa 10.1.3
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL extensions:

$ dpkg -l | grep -i mesa:

ii  libegl1-mesa:amd64                    10.1.3-0ubuntu0.1                    amd64        free implementation of the EGL API -- runtime
ii  libegl1-mesa-drivers:amd64            10.1.3-0ubuntu0.1                    amd64        free implementation of the EGL API -- hardware drivers
ii  libgl1-mesa-dri:amd64                 10.1.3-0ubuntu0.1                    amd64        free implementation of the OpenGL API -- DRI modules
ii  libgl1-mesa-glx:amd64                 10.1.3-0ubuntu0.1                    amd64        free implementation of the OpenGL API -- GLX runtime
ii  libglapi-mesa:amd64                   10.1.3-0ubuntu0.1                    amd64        free implementation of the GL API -- shared library
ii  libglu1-mesa:amd64                    9.0.0-2                              amd64        Mesa OpenGL utility library (GLU)
ii  libopenvg1-mesa:amd64                 10.1.3-0ubuntu0.1                    amd64        free implementation of the OpenVG API -- runtime
ii  libtxc-dxtn-s2tc0:amd64               0~git20131104-1.1                    amd64        Texture compression library for Mesa
ii  libwayland-egl1-mesa:amd64            10.1.3-0ubuntu0.1                    amd64        implementation of the Wayland EGL platform -- runtime
ii  mesa-utils                            8.1.0-2                              amd64        Miscellaneous Mesa GL utilities

Запуск MESA_GL_VERSION_OVERRIDE=3.2 MESA_GLSL_VERSION_OVERRIDE=150 higan заставит Higan работать.

Ответ взят с Reddit.

.

Ответ или решение

Теория (Theory)

Проблема, с которой вы столкнулись, связана с несовпадением версии OpenGL, требуемой приложением, и той, которая поддерживается вашей системой. OpenGL — это спецификация API (Application Programming Interface), используемая для рендеринга 2D и 3D векторной графики. Он широко применяется в играх и других графических приложениях. Различные версии OpenGL предлагают разные наборы возможностей, и приложения, такие как higan, требуют определённые версии для корректной работы.

Во многих современных системах доступен режим "Core Profile", который поддерживает новейшие версии OpenGL. Этот режим предназначен для работы с новейшими версиями OpenGL, очищенными от устаревших функций. С другой стороны, "Compatibility Profile" включает в себя как современные функции, так и старые, обеспечивая поддержку устаревших приложений.

Пример (Example)

В вашем случае, вывод glxinfo показывает, что ваша графическая подсистема поддерживает OpenGL версии 3.3 в Core Profile:

OpenGL core profile version string: 3.3 (Core Profile) Mesa 10.1.3

Однако общая версия OpenGL для вашей системы зарегистрирована как 3.0:

OpenGL version string: 3.0 Mesa 10.1.3

Это приводит к тому, что программа higan сообщает о недоступности OpenGL 3.2. Многие программы, включая higan, полагаются на Compatibility Profile для проверки поддержки OpenGL, но ваша графическая подсистема в текущей конфигурации предлагает только Core Profile для OpenGL версии выше 3.0.

Применение (Application)

Для решения этой проблемы вы можете временно изменить версию OpenGL, предоставляемую вашим приложениям, используя переменные среды. В конкретном случае higan, вышеупомянутое решение состоит в установке переменных:

MESA_GL_VERSION_OVERRIDE=3.2 MESA_GLSL_VERSION_OVERRIDE=150 higan

Здесь:

  • MESA_GL_VERSION_OVERRIDE=3.2 переопределяет версию OpenGL для приложения на 3.2.
  • MESA_GLSL_VERSION_OVERRIDE=150 переопределяет версию языка шейдеров на 1.50, что соответствует OpenGL 3.2.

Это поможет higan обнаружить требуемую вами версию OpenGL, заставив его работать с Core Profile, поддерживающей нужные функции.

Заключение

Таким образом, проблема заключается в разнице между Core и Compatibility Profile. Crouton на Chromebook может накладывать ограничения на использование Compatibility Profile, тогда как Core Profile доступен для приложения, поддерживающих соответствующую функциональность OpenGL. Решение этой проблемы возможно с помощью настройки переменных среды, которые временно изменяют представляемую версию OpenGL.

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

Оцените материал
Добавить комментарий

Капча загружается...