这是我现在的电脑的规格:
- 英特尔赛扬 CPU 1037U
- 英特尔高清显卡 2500 (IVB GT1)
- OpenGL ES 3.0
- 梅萨 20.0.8
- Ubuntu 20.04 LTS 64 位
我想安装 OBS,它需要OpenGL 3.3
根据这英特尔赛扬 1037U 是英特尔赛扬 1000 系列的一部分。根据这,Intel Celeron 1000系列最高可支持OpenGL 4。
现在我该如何升级我的 OpenGL?
答案1
显然,问题的根源在于我无法正确检查我的 OpenGL 版本。
glxinfo | grep "OpenGL"
这是我的机器上的完整输出:
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) HD Graphics 2500 (IVB GT1)
OpenGL core profile version string: 4.2 (Core Profile) Mesa 20.0.8
OpenGL core profile shading language version string: 4.20
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 3.0 Mesa 20.0.8
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.0 Mesa 20.0.8
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00
OpenGL ES profile extensions:
我以为我的 OpenGL 版本是 3.0(OpenGL 版本字符串)。结果发现这里有两个 OpenGL 版本,分别是 3.0 和 4.2(核心配置文件)。
根据这在 OpenGL 3.0 中,许多 OpenGL 函数被声明为弃用。OpenGL 3.1 删除了 OpenGL 3.0 中几乎所有弃用的功能。在 3.2 中,OpenGL 被分为两个:核心和兼容性。在兼容性配置文件中,弃用的功能仍然可以访问,但我们无法访问较新的功能。新功能在核心配置文件上实现,但弃用的功能已被删除。
这可能类似于 Python 2.7 与 Python 3.x 的比较。如果我们使用 2.7,所有过去已弃用的功能仍可访问,但无法访问较新的功能。如果我们想使用较新的功能,请使用 3.x,但无法访问已弃用的功能。
简单来说,3.0 大概是兼容版本,4.3 是核心版本,这样已经满足 OBS 的要求了(4.3 > 3.3),我的 OBS 现在运行正常。
为什么 glxinfo 会同时显示两个版本(3.0 和 4.3)?可能是因为 OpenGL 强制要求实现核心,但不能保证兼容性。通过同时显示两个版本,它告诉我们此 OpenGL 实现同时支持兼容性配置文件和核心配置文件。