opengl - 在 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 的问题?你的解决方案是什么?
解决方案
几天前我也遇到了同样的问题,在与 HPC 人员交换电子邮件后,我们的解决方案非常简单:
导出 MESA_GL_VERSION_OVERRIDE=3.2
我正在使用 RealVNC Viewer 访问 HPC,并通过 VSCode 运行 Mayavi API。
我还推荐 PyVista,它在很多方面似乎更 Pythonic。我能够将所有情节保存在 PyVista 中,而且情节很棒。
新问题是我无法使用 API 或交互式场景保存 mlab 图。到目前为止,我只得到了一个黑色的身影。
一些与保存相关的答案:mayavi mlab.savefig() 给出的空图像到目前为止在 VNC 中效果不佳。
推荐阅读
- machine-learning - 为序数神经网络编码我的多类分类问题
- websocket - 我需要使用 jmeter 和 redline 13 加载/性能测试聊天套接字
- android - 应用浏览器中的 React Native url 响应找不到为空
- docker - 关键配置中的流利位变量
- python - 预期的 ASGI 消息“websocket.accept”或“websocket.close”,但得到“http.response.start”
- c++ - 谁在 C++ 中删除了指针(不是用 new 创建的)?
- c# - 在 wpf 中使用联合查询
- jsdoc - 向生成的 JSDoc 文档添加自定义内容
- sqlalchemy - 如何在 SQLAlchemy 中使用 Enum 和模式?
- python - 正则表达式删除多行字符串中的重复短语