如何从服务器转发openGL应用程序

时间:2018-11-27 07:30:18

标签: opengl ssh x11 nvidia x11-forwarding

我有一台装有nvidia图形卡的服务器,我想运行一些openGL应用程序并将显示内容转发给客户端。

我该如何实现?目前我尚未安装X window系统。

1 个答案:

答案 0 :(得分:3)

X转发意味着将所有渲染命令封装到X传输中,并与显示器一起传输到机器上并在此处执行。好处是,远端不需要GPU。 缺点是,它消耗(很好,而不是吞噬)大量的网络带宽。

OpenGL直到2.1版都为X11传输指定GLX操作码,因此对网络透明。而且,如果您自由地使用显示列表,并保持传输的数据量很小(即没有客户端顶点数组,只有很少的纹理),则OpenGL-over-GLX-over-X11-over-TCP效果很好。

然而,如今,远程渲染和仅使用高效压缩编解码器传输生成的图像更为有效。但是,纯X11转发无法做到这一点。但是,您可以使用由“真实” X服务器支持的Xpra与实际的GPU进行通信。问题是,您将需要特定的X服务器来占用GPU。

更好的方法是检测是否有GLX扩展,如果没有,则使用GPU渲染为XSHM像素图。这样一来,虚拟帧缓冲服务器上的Xpra也可以工作。不幸的是,使用OpenGL进行后期处理很难以某种方式实现,因为它可以跨上下文创建API透明地工作。可以做到(BT; DT),但实际上,对于这种事情,我实际上更喜欢Vulkan,因为尽管Vulkan非常冗长,但与OpenGL相比,可靠地使用Vulkan进行的工作较少。

也许(不太可能),我们将看到一些X11扩展,用于像素映射的压缩传输,一些高压缩XV或类似的扩展。结合纯屏幕外的GPU渲染(我们已经拥有),将使系统效率更高。