VNC 终端中的 vtkXOpenGLRenderWindow 错误
vtkXOpenGLRenderWindow error in a terminal in VNC
我 运行 我的工作站上有一个 vnc 服务器,并与另一台计算机连接。服务器和客户端都是运行ning 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
为 vnc 服务器安装了 Xfce,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 连接到服务器时,$DISPLAY
是 localhost:10.0
,vtk 相关命令将启动一个 X window。但是,如果在 ssh 终端中启动 vnc 服务器,登录到 xfce 并在其中打开一个终端,$DISPLAY
是 :1.0
并且 vtk 无法启动 X window,以下消息:
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.
我认为这可能与 vnc 服务器 xstartup
中缺少 X 服务器的配置有关。但我不知道该怎么做。谁能帮我调试一下?如果需要,将提供任何进一步的信息。谢谢!
20160823更新
我接受了VirtualGL + TurboVNC的建议,安装了这两个组件。根据 http://www.virtualgl.org/vgldoc/2_1_1/#hd009001 第 6.1 部分,使用 vglserver_config
完成了一个简单的配置。然后我用 xstartup.turbovnc
:
将 TurboVNC 的 vncserver
制作成 运行 xfce
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
OS=`uname -s`
exec startxfce4
在客户端,我使用TurboVNC的vncviewer
连接服务器。桌面看起来与默认 vncserver 中的桌面完全不同。然后我尝试了
/opt/VirtualGL/bin/vglrun vmtkimageviewer -ifile image_volume_voi.vti
其中vmtkimageviewer应该打开一个window,但最后它给出了一个错误:
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 window,尽管 $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
终于,我把一切都搞定了。 VirtualGL only is enough for my purpose. Just install and config as the section 6.2 & 6.3 in its user's guide。像往常一样使用默认的 vncserver
和 vncviewer
,不需要 TurboVNC。当您需要 OpenGL 支持时使用 vglrun
。一个修改是我应该删除 .bashrc
.
中的 export LIBGL_ALWAYS_INDIRECT=y
它在我的情况下运行流畅。 @datenwolf:再次感谢您!
我 运行 我的工作站上有一个 vnc 服务器,并与另一台计算机连接。服务器和客户端都是运行ning 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
为 vnc 服务器安装了 Xfce,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 连接到服务器时,$DISPLAY
是 localhost:10.0
,vtk 相关命令将启动一个 X window。但是,如果在 ssh 终端中启动 vnc 服务器,登录到 xfce 并在其中打开一个终端,$DISPLAY
是 :1.0
并且 vtk 无法启动 X window,以下消息:
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.
我认为这可能与 vnc 服务器 xstartup
中缺少 X 服务器的配置有关。但我不知道该怎么做。谁能帮我调试一下?如果需要,将提供任何进一步的信息。谢谢!
20160823更新
我接受了VirtualGL + TurboVNC的建议,安装了这两个组件。根据 http://www.virtualgl.org/vgldoc/2_1_1/#hd009001 第 6.1 部分,使用 vglserver_config
完成了一个简单的配置。然后我用 xstartup.turbovnc
:
vncserver
制作成 运行 xfce
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
OS=`uname -s`
exec startxfce4
在客户端,我使用TurboVNC的vncviewer
连接服务器。桌面看起来与默认 vncserver 中的桌面完全不同。然后我尝试了
/opt/VirtualGL/bin/vglrun vmtkimageviewer -ifile image_volume_voi.vti
其中vmtkimageviewer应该打开一个window,但最后它给出了一个错误:
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 window,尽管 $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
终于,我把一切都搞定了。 VirtualGL only is enough for my purpose. Just install and config as the section 6.2 & 6.3 in its user's guide。像往常一样使用默认的 vncserver
和 vncviewer
,不需要 TurboVNC。当您需要 OpenGL 支持时使用 vglrun
。一个修改是我应该删除 .bashrc
.
export LIBGL_ALWAYS_INDIRECT=y
它在我的情况下运行流畅。 @datenwolf:再次感谢您!