如何使用VNC远程显示OpenGLgraphics?

我试图运行一个程序,使用OpenGL通过VNC在视口中渲染模型失败。

我收到的错误信息是 – Xlib:扩展名“GLX”在显示“:1.0”时丢失。

这是我的理解,VNC可以configuration为远程渲染所有graphics,并从显示缓冲区发送到本地客户端的压缩屏幕抓取。 这似乎抵消了在本地客户端上GLX扩展的需要。 VNC可以这样configuration,你可以简单介绍一下吗?

远程主机:

RHEL 5上的vncserver

本地客户端:

Windows XP上的UltraVNC

你可能想看看虚拟GL

Quote:“VirtualGL是一个开源软件包,它使任何Unix或Linux远程显示软件能够运行OpenGL应用程序与全3D硬件加速”

我正在使用x11vnc来远程访问显示器正在显示的任何内容。 x11vnc与本地X11服务器通信,并通过vnc将帧缓冲区从服务器复制到客户端。 由于本地X11服务器使用硬件加速渲染所有内容,因此即使使用所有酷酷的桌面效果,我也能通过VNC获得硬件加速的OpenGL。 这是我如何启动x11vnc:

x11vnc -rfbauth ~/.vnc/passwd -display :0 -forever -bg -repeat -nowf -o ~/.vnc/x11vnc.log 

我认为几乎所有的vnc浏览器都能正常工作,但我build议使用turbovnc或tigervnc。 我首先尝试了VirtualGL,它工作正常,但不适用于整个桌面,只适用于单独的OpenGL应用程序。

甚至可以使用xrandr来改变display / vnc的分辨率。 像这样:

 xrandr -q (to see available modes and outputs) xrandr --output DVI-I-0 --mode "1024x768" (change mode on DVI output) 

(如果可用的模式不够,可以添加新的分辨率,但这不在此范围之内。)

所以现在我有一个完全OpenGL硬件加速和可resize的VNC会话。

禁用UltraVNC使用的特殊Video Hook驱动程序,或使用TightVNC。

由于使用UltraVNC驱动程序来提高性能,因此会丢弃在video卡上执行的任何types的video处理,例如OpenGL。

UltraVNC默认安装这个video驱动程序,它使得它无法显示OpenGLgraphics。 请注意,禁用驱动程序将大大降低性能。 还要注意的是,虽然显示OpenGL性能的项目会受到两端的影响,因为客户机现在有更多的工作要做,所需的带宽要高得多。 不要期望每帧超过4秒(不是4fps,更像是0.25fps)