首页 > 解决方案 > 在 VNC 上使用 Mayavi mlab 引发 OpenGL 错误

问题描述

我在 python 中使用 Mayavi mlab 和 MNE-Python 环境中的 PyCharm IDE 时遇到了一些困难。我使用 xvnc 服务器从本地 MacOS 到 Linux 集群机器,通过 VNC 会话访问带有 Mayavi 和 VTK 的 Conda 环境。

打开 mlab 窗口时出现的错误是:

ERROR: In ../Rendering/OpenGL2/vtkOpenGLRenderWindow.cxx, line 754 
vtkXOpenGLRenderWindow (0x556e13b32670): Unable to find a valid OpenGL 3.2 or later implementation. Please update your video card driver to the latest version. If you are using Mesa please make sure you have version 11.2 or later and make sure your driver in Mesa supports OpenGL 3.2 such as llvmpipe or openswr. If you are on windows and using Microsoft remote desktop note that it only supports OpenGL 3.2 with nvidia quadro cards. You can use other remoting software such as nomachine to avoid this issue.

似乎使用 VirtualGL 来拦截 PyCharm 以实现 VTK 对 OpenGL 的调用是一种可能的解决方案。有没有人成功克服了在 VNC 会话上使用 Mayavi mlab 的问题?你的解决方案是什么?

标签: openglpycharmvncmayavimne-python

解决方案


几天前我也遇到了同样的问题,在与 HPC 人员交换电子邮件后,我们的解决方案非常简单:

导出 MESA_GL_VERSION_OVERRIDE=3.2

我正在使用 RealVNC Viewer 访问 HPC,并通过 VSCode 运行 Mayavi API。

在此处输入图像描述

我还推荐 PyVista,它在很多方面似乎更 Pythonic。我能够将所有情节保存在 PyVista 中,而且情节很棒。

新问题是我无法使用 API 或交互式场景保存 mlab 图。到目前为止,我只得到了一个黑色的身影。

一些与保存相关的答案:mayavi mlab.savefig() 给出的空图像到目前为止在 VNC 中效果不佳。


推荐阅读