我试图运行一个使用 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)