我正在尝试运行一个使用OpenGL的程序,该程序无法通过VNC在视口中渲染模型。
我收到的错误消息是-Xlib:在显示“:1.0”上缺少扩展名“ GLX”。
据我了解,可以将VNC配置为远程渲染所有图形,并将压缩的屏幕抓图从显示缓冲区发送到本地客户端。这似乎消除了本地客户端上对GLX扩展的需求。可以用这种方式配置VNC,您能否简要介绍一下如何?
远程主机:
RHEL 5上的vncserver
本地客户:
Windows XP上的UltraVNC
我正在尝试运行一个使用OpenGL的程序,该程序无法通过VNC在视口中渲染模型。
我收到的错误消息是-Xlib:在显示“:1.0”上缺少扩展名“ GLX”。
据我了解,可以将VNC配置为远程渲染所有图形,并将压缩的屏幕抓图从显示缓冲区发送到本地客户端。这似乎消除了本地客户端上对GLX扩展的需求。可以用这种方式配置VNC,您能否简要介绍一下如何?
远程主机:
RHEL 5上的vncserver
本地客户:
Windows XP上的UltraVNC
Answers:
您可能要看一下Virtual GL
Quote:“ VirtualGL是一个开源软件包,它使任何Unix或Linux远程显示软件都能够以完全3D硬件加速运行OpenGL应用程序。”
我正在使用x11vnc来远程访问监视器显示的内容。x11vnc与本地X11服务器对话,并通过vnc将帧缓冲区从服务器复制到客户端。由于本地X11服务器通过硬件加速来呈现所有内容,因此即使具有所有出色的桌面效果,我也可以通过VNC获得硬件加速的OpenGL。这就是我启动x11vnc的方法:
x11vnc -rfbauth ~/.vnc/passwd -display :0 -forever -bg -repeat -nowf -o ~/.vnc/x11vnc.log
我认为几乎所有的vnc查看器都可以使用,但是我建议您使用turbovnc或tigervnc。我首先尝试了VirtualGL,但效果很好,但不适用于整个桌面,仅适用于单个OpenGL应用程序。
甚至可以使用xrandr更改显示器/ vnc的分辨率。例如:
xrandr -q (to see available modes and outputs)
xrandr --output DVI-I-0 --mode "1024x768" (change mode on DVI output)
(如果可用的模式还不够,可以添加新的分辨率,但这超出了此处的范围。)
因此,现在我有了一个完整的OpenGL硬件加速和可调整大小的VNC会话。
禁用UltraVNC使用的特殊Video Hook驱动程序,或使用TightVNC。
由于使用UltraVNC驱动程序来提高性能,因此它会丢弃在视频卡上完成的任何类型的视频处理,例如OpenGL。
默认情况下,UltraVNC安装的视频驱动程序会安装它,因此它无法显示OpenGL图形。请注意,禁用驱动程序将大大降低性能。还要注意,在显示以OpenGL渲染的项目时,两端都会受到影响,因为客户端计算机现在要做的工作还很多,而所需的带宽也要高得多。每帧不要超过4秒(不是4 fps,更像是0.25 fps)