opengl - VNC 终端中的 vtkXOpenGLRenderWindow 错误

标签 opengl ssh x11 vtk vnc

我在我的工作站上运行一个 vnc 服务器并与另一台计算机连接。服务器和客户端都在运行 Debian Jessie:

$ uname -a
Linux debian-VAIO 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt25-2+deb8u2 (2016-06-25) x86_64 GNU/Linux

Xfce 是为 vnc 服务器和 xstartup 安装的。是:
$ cat ~/.vnc/xstartup
#!/bin/sh
xrdb $HOME/.Xresources
xsetroot -solid grey
export XKL_XMODMAP_DISABLE=1
exec startxfce4

在 ~/.bashrc 中,我添加了以下几行:
export LIBGL_ALWAYS_INDIRECT=y
export LD_PRELOAD='/usr/lib/x86_64-linux-gnu/libstdc++.so.6'

目前,当我使用 ssh -X SSH 到服务器时, $DISPLAYlocalhost:10.0 , vtk 相关命令将启动一个 X 窗口。但是,如果在 ssh 终端中启动了一个 vnc 服务器,登录到 xfce 并在其中打开一个终端,$DISPLAY:1.0并且 vtk 无法启动 X 窗口,并显示以下消息:
Error: In /home/orobix/Desktop/vmtk-build/VTK/Rendering/OpenGL/vtkXOpenGLRenderWindow.cxx, line 394
vtkXOpenGLRenderWindow (0x2c30f10): Could not find a decent visual

Error: In /home/orobix/Desktop/vmtk-build/VTK/Rendering/OpenGL/vtkXOpenGLRenderWindow.cxx, line 394
vtkXOpenGLRenderWindow (0x2c30f10): Could not find a decent visual

Error: In /home/orobix/Desktop/vmtk-build/VTK/Rendering/OpenGL/vtkXOpenGLRenderWindow.cxx, line 394
vtkXOpenGLRenderWindow (0x2c30f10): Could not find a decent visual

Error: In /home/orobix/Desktop/vmtk-build/VTK/Rendering/OpenGL/vtkXOpenGLRenderWindow.cxx, line 613
vtkXOpenGLRenderWindow (0x2c30f10): GLX not found.  Aborting.

我认为这可能与 xstartup 中缺少 X 服务器的配置有关。 vnc 服务器。但我不知道该怎么做。谁能帮我调试一下?如果需要,将提供任何进一步的信息。谢谢!

20160823更新

我接受了 VirtualGL + TurboVNC 的建议并安装了这两个组件。使用 vglserver_config 的简单配置根据 http://www.virtualgl.org/vgldoc/2_1_1/#hd009001 完成第 6.1 部分。然后我做了vncserver TurboVNC 使用 xstartup.turbovnc 运行 xfce :
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
OS=`uname -s`
exec startxfce4

在客户端,我使用 vncviewer TurboVNC 连接服务器。桌面看起来与默认 vncserver 中的完全不同。然后我尝试了
/opt/VirtualGL/bin/vglrun vmtkimageviewer -ifile image_volume_voi.vti

vmtkimageviewer 应该在其中打开一个窗口,但最后它给出了一个错误:
Executing vmtkimageviewer ...
X Error of failed request:  GLXBadContext
  Major opcode of failed request:  156 (GLX)
  Minor opcode of failed request:  6 (X_GLXIsDirect)
  Serial number of failed request:  17
  Current serial number in output stream:  16

不幸的是,我发现 ssh -X , 我不能像以前那样启动 X 窗口,虽然 $DISPLAY仍然是 localhost:10.0 .输出是:
Executing vmtkimageviewer ...
X Error of failed request:  BadValue (integer parameter out of range for operation)
  Major opcode of failed request:  156 (GLX)
  Minor opcode of failed request:  3 (X_GLXCreateContext)
  Value in failed request:  0x0
  Serial number of failed request:  37
  Current serial number in output stream:  38

但我认为我更接近事实,因为它看起来像 VirtualGL 工作(?)。下一步该做什么?

最佳答案

Xrdp(Xvnc 或 Xvfb)使用的 X 服务器变体简单明了,根本不支持 OpenGL/GLX,因此需要 OpenGL 的程序将无法在该配置中运行。

不过可以回退到 Mesa swrast 或 llvmpipe:http://www.mesa3d.org/llvmpipe.html

关于opengl - VNC 终端中的 vtkXOpenGLRenderWindow 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39082920/

相关文章:

vim - tmux + vim,当从 Windows ssh 到 Linux 机器时重新连接后剪贴板失败

c - X11 应用程序无法使用/双缓冲绘制

OpenGL 调试或控制台的详细信息

qt - 捕获QML绘图缓冲区,而不显示

bash - 我可以从命令行设置 vim 颜色方案吗?

c# - 从 Windows 机器与 SSH session 交互的最简单方法?

opengl - 计算与图形的依赖关系

c++ - OpenGL Sprite 半像素位置偏移

c - 使用X11(GTK,GDK)功能从C发送键组合

c++ - FLTK 1.4 小部件位置 w.r.t. X11 根窗口?