我似乎无法在配备英特尔集成显卡的 Ubuntu 19.04 上获得 OpenGL 4.5 支持。我是 OpenGL 的新手,正在尝试运行一些现有代码。
当尝试在 Python 中运行 OpenGL 代码时,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 的支持由硬件决定,在这种情况下,您需要获取正确的驱动程序。
我的英特尔 CPU 提供 UHD Graphics 630,它(根据这一页) 应通过适当的驱动程序支持 OpenGL 4.5。
在全新安装的 Ubuntu 19.04 上glxinfo | grep "OpenGL version"
返回OpenGL version string: 3.0 Mesa 19.0.8
。我将其读为“Mesa 19.0.8 提供的 OpenGL 版本 3.0 实现”。在寻找解决方案时,我发现这个帖子askubuntu 提供了使用 ppa 升级 Ubuntu 上的英特尔显卡驱动程序的说明。详细信息请参阅该帖子,但要升级到新驱动程序,请执行以下操作:
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 设置的机器上运行良好,设置是我所苦苦挣扎的部分!)
如果问题有问题,请标记,我会尝试解决。任何帮助都值得感激。谢谢!