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

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

我试图运行一个使用 OpenGL 通过 VNC 在视口中渲染模型的程序,但没有成功。

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

据我了解,VNC 可以配置为远程渲染所有图形,并将显示缓冲区中的压缩屏幕截取发送到本地客户端。这似乎消除了本地客户端对 GLX 扩展的需求。VNC 可以这样配置吗?您能简单描述一下如何配置吗?

远程主机:

RHEL 5 上的 vncserver

本地客户:

Windows XP 上的 UltraVNC

答案1

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

答案2

你可能想看看虚拟总账

引文:“VirtualGL 是一个开源软件包,它使任何 Unix 或 Linux 远程显示软件能够运行具有完整 3D 硬件加速的 OpenGL 应用程序”

答案3

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

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

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

相关内容