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

Jar*_*own 27 linux windows vnc opengl

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

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

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

远程主机:

RHEL 5 上的 vncserver

本地客户:

Windows XP 上的 UltraVNC

小智 18

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

x11vnc -rfbauth ~/.vnc/passwd  -display :0 -forever -bg -repeat -nowf -o ~/.vnc/x11vnc.log
Run Code Online (Sandbox Code Playgroud)

我认为几乎所有 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)
Run Code Online (Sandbox Code Playgroud)

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

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


小智 17

你可能想看看虚拟 GL

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


Ice*_*age 1

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

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

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