如何使用VNC远程显示OpenGL图形?


24

我正在尝试运行一个使用OpenGL的程序,该程序无法通过VNC在视口中渲染模型。

我收到的错误消息是-Xlib:在显示“:1.0”上缺少扩展名“ GLX”。

据我了解,可以将VNC配置为远程渲染所有图形,并将压缩的屏幕抓图从显示缓冲区发送到本地客户端。这似乎消除了本地客户端上对GLX扩展的需求。可以用这种方式配置VNC,您能否简要介绍一下如何?

远程主机:

RHEL 5上的vncserver

本地客户:

Windows XP上的UltraVNC


OpenGL程序可以在RH#L5控制台上本地工作吗?它可以通过X-Windows远程运行吗?如果不是,它将在VNC上不起作用。
kmarsh 2010年

2
为什么这是社区Wiki?
克里斯·S

我以为如果是社区Wiki,人们可以编辑问题以使其与存档更加相关。
贾里德·布朗

Answers:


17

您可能要看一下Virtual GL

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


14

我正在使用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会话。


1
在Tesla K80 GCE机器上对xfce4和Blender进行了这种方法的尝试...它完美地工作了。由于某些原因,Gnome-shell仍然无法像以往一样正确显示。askubuntu.com/questions/229989/…–
雷·福斯

1

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

由于使用UltraVNC驱动程序来提高性能,因此它会丢弃在视频卡上完成的任何类型的视频处理,例如OpenGL。

默认情况下,UltraVNC安装的视频驱动程序会安装它,因此它无法显示OpenGL图形。请注意,禁用驱动程序将大大降低性能。还要注意,在显示以OpenGL渲染的项目时,两端都会受到影响,因为客户端计算机现在要做的工作还很多,而所需的带宽也要高得多。每帧不要超过4秒(不是4 fps,更像是0.25 fps)


当您说在UltraVNC中禁用视频挂钩时,您指的是本地客户端?不必配置在远程主机上运行的vncserver吗?
Jared Brown

不,我的意思是本地客户。UltraVNC附带了一个视频驱动程序。除非您另有明确说明,否则视频驱动程序将尝试在客户端上处理所有视频,以便它可以压缩和流化以供在网络上使用。有时可以在查看器上指定您不想使用此功能,但是UltraVNC(至少过去是)倾向于忽略此功能。
IceMage 2010年

此外,远程和本地取决于您的观点。当我说本地时,我的意思是主机(正在侦听新连接的计算机),而远程是指进行连接的计算机。我会在以后的帖子中对此进行更正。
IceMage 2010年

好的-我猜我正在使用相反的术语。当我安装UltraVNC查看器时,我不相信它安装了视频驱动程序。我知道的UltraVNC服务器可以,但是我没有使用它。我正在RHEL5计算机上使用vncserver作为主机。
Jared Brown

因此,我真正的问题是,如何配置vncserver而不是发送GLX命令,而是仅将压缩的屏幕从显示缓冲区发送到UltraVNC查看器?
Jared Brown
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.