为什么我的 OpenGL 版本字符串与核心配置文件版本字符串不一致?

为什么我的 OpenGL 版本字符串与核心配置文件版本字符串不一致?

我正在尝试运行一些 Unity3D 游戏,这些游戏需要“OpenGL 核心配置文件 3.2 或更高版本的 OpenGL 核心渲染器”(根据游戏自己的输出)。

据我所知,我OpenGL 3.3。但是,我的glxinfo输出非常非常令人困惑:

glxinfo | grep "OpenGL"
OpenGL vendor string: VMware, Inc.
OpenGL renderer string: llvmpipe (LLVM 6.0, 256 bits)
OpenGL core profile version string: 3.3 (Core Profile) Mesa 18.2.0-devel
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.1 Mesa 18.2.0-devel
OpenGL shading language version string: 1.40
OpenGL context flags: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.0 Mesa 18.2.0-devel
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00
OpenGL ES profile extensions:

那么,我的“核心配置文件版本”是 3.3(高于 Unity3D 所需的版本),但我的“版本”是 3.1?这是为什么?我该怎么办?

我有一台 Intel Core i5-3320M,并且使用带有 i915 驱动程序的 Mesa 18.2。

答案1

核心概况版本是您可以在卡上使用的 GL 版本以及驱动程序。通常,这才是真正重要的。

OpenGL 版本字符串你可以忽略它。这是兼容配置文件版本。

然而,你遇到的具体问题似乎是你的系统实际上正在使用llvmpipe渲染器,而不是实际 GPU 的硬件加速。供应商字符串价值应该是这样的英特尔开源技术中心渲染器字符串就像是Mesa DRI Intel(R) Ivybridge 移动。您可能需要确保已经intel-microcode安装了该包。

答案2

事实证明,这是由于 Ubuntu 18.04 升级过程中的一系列错误造成的。

错误 1错误 2, 和错误 3导致任何系统libegl回退到llvmpipe软件渲染。

libegllibnvidia-gl-390反过来,由于依赖它,所以在不需要它的系统上被错误地安装。

libnvidia-gl-390在许多系统上被错误地要求。卸载它可以修复此问题。

相关内容