我正在使用Google Cloud Platform做一些工作,也就是说我使用ssh登录。当我从其他人运行脚本(mayavi / test_drawline.py)时,它告诉我:
ERROR: In /work/standalone-x64-build/VTKsource/Rendering/OpenGL2/vtkOpenGLRenderWindow.cxx, line 797 vtkXOpenGLRenderWindow (0x3987b00): GL version 2.1 with the gpu_shader4 extension is not supported by your graphics driver but is required for the new OpenGL rendering backend. Please update your OpenGL driver. If you are using Mesa please make sure you have version 10.6.5 or later and make sure your driver in Mesa supports OpenGL 3.2.
所以我认为我需要升级我的台面。在此之前,glxinfo显示:
server glx version string: 1.4
client glx version string: 1.4
GLX version: 1.4
OpenGL version string: 1.4 (2.1 Mesa 10.5.4)
我遵循了How to upgrade mesa的指示,但是glxinfo并没有改变。
然后我尝试从源代码编译Mesa。因此,我遵循了Mesa官方网站Compiling and Installing上的指示。我用 使用autoconf构建(Linux / Unix / X11)。一切正常,看来我已经安装了最新的Mesa。
但是,当我运行glxinfo |时再次使用grep版本,仍然像这样:
server glx version string: 1.4
client glx version string: 1.4
GLX version: 1.4
OpenGL version string: 1.4 (2.1 Mesa 10.5.4)
我尝试过重新启动,但是不起作用。
那么,有人知道如何解决吗?
谢谢!
答案 0 :(得分:0)
所报告的OpenGL版本仅取决于可用的Mesa版本,仅次于学位。您报告了GLX-1.4和OpenGL-1.4,这是15年前的绝对基准版本。因此,这不是Mesa版本问题。
更有可能的是,您正在尝试在系统配置中创建OpenGL上下文,而如果不依靠软件渲染,该上下文不能做超过OpenGL-1.4的工作。现在可能的原因之一是,您正在使用X11转发通过SSH连接。在这种情况下,所有OpenGL命令都将通过X11连接(GLX)传输到本地计算机,然后在本地计算机上执行。但是,GLX的OpenGL版本配置文件功能非常有限。从技术上讲,它最多支持OpenGL-2.1(这是OpenGL的最新版本,该版本为其所有功能定义了GLX传输操作码)。但是给定的配置可能支持的更少。
如果远程计算机确实具有GPU,则必须使用该GPU。几年前,这意味着要在那里运行Xorg服务器。不再。借助NVidia GPU,您可以使用无头EGL。借助Intel和AMD GPU,您还可以使用无头EGL,或使用GBM / DRI创建无头GPU加速的OpenGL上下文。当然,这需要在远端使用GPU。
如果远程站点上没有GPU,则必须使用某些软件实现。不幸的是,Mesa不能与转发的X11会话一起使用。最好的选择是运行Xpra或Xvnc(即某种远程帧缓冲区)之类的东西,其中X服务器在远程端上运行,以便GLX连接在那里终止而不是在本地计算机上终止。
或者您以某种方式哄骗要构建的程序以使用OSMesa(离屏Mesa),但这需要完全不同的OpenGL上下文设置,与GLX完全不同,因此您的VTK应用程序可能无法正常运行框。