OpenGL / GLSL 4.5 в Ubuntu 19.04, интегрированная графика Intel

Я не могу получить поддержку OpenGL 4.5 в Ubuntu 19.04 с Intel Integrated Graphics. Совершенно новый для работы с OpenGL, и я пытаюсь запустить какой-то существующий код.

При попытке запустить код OpenGL в Python RuntimeError:

RuntimeError: 0:1(10): error: GLSL 4.50 is not supported. Supported versions are: 1.10, 1.20, 1.30, 1.00 ES, 3.00 ES, 3.10 ES, and 3.20 ES

остальная часть поста будет довольно расплывчатой, но мой основной вопрос таков; как я могу решить эту проблему?

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

Мой процессор Intel предоставляет UHD Graphics 630, которая (согласно на этой странице ) должна поддерживать OpenGL 4.5 с соответствующими драйверами.

Снимок экрана с таблицей на случай, если по какой-то причине связь не работает

В новой установке Ubuntu 19.04 glxinfo | grep "OpenGL version" возвращает OpenGL version string: 3.0 Mesa 19.0.8. Который я читаю как «Реализация OpenGL версии 3.0, предоставленная Mesa 19.0.8». В поисках решения я нашел этот пост на askubuntu, в котором содержатся инструкции по обновлению графического драйвера Intel для Ubuntu с использованием ppa. Подробности на этом посту, но для обновления до новых драйверов это было:

sudo add-apt-repository ppa:oibaf/graphics-drivers

sudo apt update && sudo apt upgrade

Теперь glxinfo | grep "OpenGL version" дает мне OpenGL version string: 3.0 Mesa 19.3.0-devel (git-ffb0d3a 2019-09-29 disco-oibaf-ppa), который появляется иметь новую версию Mesa, но OpenGL все еще находится на версии 3.0. Тем не менее, полный вывод glxinfo | "OpenGL" я получаю:

OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) UHD Graphics 630 (Coffeelake 3x8 GT2) 
OpenGL core profile version string: 4.6 (Core Profile) Mesa 19.3.0-devel (git-ffb0d3a 2019-09-29 disco-oibaf-ppa)
OpenGL core profile shading language version string: 4.60
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 3.0 Mesa 19.3.0-devel (git-ffb0d3a 2019-09-29 disco-oibaf-ppa)
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 19.3.0-devel (git-ffb0d3a 2019-09-29 disco-oibaf-ppa)
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
OpenGL ES profile extensions:

, который показывает версию профиля ядра и версию языка заливки профиля ядра 4.6? Каковы различия между основными записями и неосновными записями в выводе терминала выше?

Я могу опубликовать код GLSL, но я не думаю, что это будет полезно, так как это не проблема кода ( Я знаю, что этот код отлично работает на машинах, которые имеют правильную настройку OpenGL, с этой настройкой я и борюсь!)

Если возникнут проблемы с вопросом, отметьте его как таковой, и я попытаюсь обратиться к ним. Любая помощь приветствуется. Спасибо!

1
задан 30 September 2019 в 18:56

1 ответ

Найденный проблемой благодаря комментарий SurvivalMachine выше. Версия PyGame, который я использовал (1.9.5), создавала неправильный тип контекста (совместимость), которая не поддерживала GLSL 4.50. Это - известная проблема с PyGame и было зафиксировано с PyGame 2.0.0 по данным их GitHub. Для фиксации я обновил к PyGame 2.0.0.dev3, который позволяет Вам вынуждать правильную версию OpenGL использоваться при создании контекста. См. этот сообщение StackOverflow (который связывается со связанной проблемой GitHub) для деталей.

0
ответ дан 23 October 2019 в 09:52

Другие вопросы по тегам:

Похожие вопросы: