显示OpenGL版本的终端命令是什么?

我想找出我正在使用的OpenGL版本。我通过SSH可以访问Ubuntu。我应该执行哪个命令?

8个回答

检查OpenGL版本,

glxinfo | grep "OpenGL version"

您将得到以下输出,

glxinfo | grep "OpenGL version"
OpenGL version string: 1.4 (2.1 Mesa 7.7.1)

编辑:
你可能会在现代OpenGL中更容易找到“版本”而不是“OpenGL版本”,考虑到核心和兼容配置文件之间的差异,以及各种GLSL和GLES版本。
glxinfo | grep 'version'
server glx version string: 1.4
client glx version string: 1.4
GLX version: 1.4
    Max core profile version: 4.1
    Max compat profile version: 3.0
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 3.0
OpenGL core profile version string: 4.1 (Core Profile) Mesa 11.1.2
OpenGL core profile shading language version string: 4.10
OpenGL version string: 3.0 Mesa 11.1.2
OpenGL shading language version string: 1.30
OpenGL ES profile version string: OpenGL ES 3.0 Mesa 11.1.2
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00

请注意,实际版本由“核心配置文件版本”(4.1)表示,而“OpenGL版本”则表示为3.0。

7小心!glxinfo告诉你的是DISPLAY所使用的OpenGL版本,而不是远程机器的版本!然而,它会告诉你远程机器(即“客户端”部分)的GLX版本。 - Rich
如果您得到了正确的显卡但错误的OpenGL版本,那么很可能是nouveau /开源驱动程序--请将它们列入黑名单或卸载它们。 - Engineer
1我进行了一些编辑,以便在现代OpenGL版本中可以找到更好的信息,特别是考虑到这是在谷歌搜索“Linux检查OpenGL版本”时的顶部结果。 - Taywee
6注意:在Ubuntu 16.04中,默认情况下无法使用glxinfo命令。要能够使用它,您需要安装mesa-utils软件包。 - starleaf1
@Rich 有没有一种简单的方法可以找到遥控器正在使用的版本? - Nathan majicvr.com
1@frank 看一下下面的回答,由thomasmichaelwallace在开发库部分提供。当你在远程机器上运行一个OpenGL客户端时,远程客户端使用远程库,但显示在你的服务器上,所以有时候会有点混淆。 - Rich
OpenGLU是什么情况?有没有办法从glxinfo中获取该版本号? - Adam Stewart

根据你的需求而定:
Open GL 实现
你可以使用 mesa-utils 包中的 glxinfo。
sudo apt-get install mesa-utils

glxinfo | grep "OpenGL version"

开发库

这有点取决于情况,

dpkg -s [package name]

会告诉你任何软件包的版本信息等等。
但是你需要知道你感兴趣的OpenGL的具体部分/实现等等。我猜,对于你来说,可能是:
dpkg -s libglu1-mesa

注意:我在后期添加了这个答案,因为现有的答案都没有涉及到关于ssh的一个关键方面,并且会给那些按照上述指示操作的人提供误导性的信息。
  1. 在ssh登录时使用X转发,可以通过ssh -X进行启用。

    没有开启X转发:

    $ ssh MYCOMP
    $ glxinfo
    Error: unable to open display
    

    开启了X转发:

    $ ssh -X MYCOMP
    $ glxinfo | grep -i opengl
    OpenGL vendor string: NVIDIA Corporation
    OpenGL renderer string: GeForce 8800 GT/PCIe/SSE2
    OpenGL version string: 2.1.2 NVIDIA 310.44
    OpenGL shading language version string: 1.20 NVIDIA via Cg compiler
    OpenGL extensions:
    

    需要注意的是,这里显示的是错误的显卡错误的版本号(与您所期望的不同)。

  2. DISPLAY变量设置为:0,以允许从远程会话中访问图形卡的驱动程序。
    $ ssh -X MYCOMP
    $ DISPLAY=:0
    $ glxinfo | grep -i opengl
     OpenGL vendor string: NVIDIA Corporation
     OpenGL renderer string: GeForce GTX 550 Ti/PCIe/SSE2
     OpenGL version string: 4.3.0 NVIDIA 310.14
     OpenGL shading language version string: 4.30 NVIDIA via Cg compiler
     OpenGL extensions:
    

    这显示了正确的显卡(远程计算机上的显卡),以及正确的版本号。


对我来说,它是localhost:10.0,不幸的是导致了X Error of failed request: GLXBadContext - phil294

对于那些只想获取版本号的用户,比如在程序参数中使用,您可以使用下列方法:
$ glxinfo | awk '/OpenGL version/ {print $4}'
3.0

注意:如果你使用bumblebee,请运行optirun glxinfo | awk '/OpenGL version/ {print $4}'

你可以通过运行以下命令来获取信息:
DISPLAY=:0 glxgears -info | grep GL_VERSION

这个类似于回声的东西:
GL_VERSION    = 3.3.0 NVIDIA 340.93

如果遇到问题,请尝试不使用DISPLAY=:0。命令glxgears位于mesa-utils软件包中,可以通过以下方式安装:
sudo apt-get install mesa-utils

1这对我来说没问题。Freescale iMX6 Yocto poky 1.6.2。 - JustWe

Ubuntu 17.10,打开终端并输入以下命令;
glxinfo | grep "OpenGL version"

你会收到类似这样的东西;
OpenGL version string: 3.0 Mesa 17.2.2

如果您收到一个错误,说程序glxinfo不可用,那么您需要输入以下命令。
sudo apt install mesa-utils

输入nvidia-settings并转到图形信息 > OpenGL。查找版本:属性的值,它应该类似于4.6.0 NVIDIA 450.66。

这不是一个终端命令,而是一个图形用户界面(GUI)。它们通过SSH进行操作。 - undefined

如果您具有对运行Ubuntu 16.04的远程计算机的root访问权限,您可以运行

user@local_computer:~$ ssh root@remote.example.com
root@remote:~# export DISPLAY=:0
root@remote:~# export XAUTHORITY=/var/lib/lightdm/.Xauthority
root@remote:~# glxinfo | grep -i "OpenGL version"
OpenGL version string: 3.0 Mesa 11.2.0

即使在Secure Shell App Chrome扩展(术语)上也能正常工作,从18.04版本的X迁移到20.04版本的Wayland。 - WiR3D