如何在服务器上使用X11转发打开OpenGL应用程序

3
我有一台配备NVIDIA显卡的服务器,想要运行一些OpenGL应用并将显示屏转发到客户端。如何实现这个目标?目前我还没有安装X窗口系统。
1个回答

8
X forwarding指的是,所有渲染命令都被封装到X传输中,并在那里传输到带有显示器的机器上执行。好处是,远程端不需要GPU。缺点是,它会消耗大量的网络带宽。
OpenGL在2.1版本之前为X11传输规定了GLX opcodes,因此是网络透明的。如果您经常使用显示列表并保持传输数据的数量较小(即没有客户端顶点数组,只有少量和小型纹理),OpenGL-over-GLX-over-X11-over-TCP就可以正常工作。
然而,如今更有效的方法是进行远程渲染,仅使用高效压缩编解码器传输生成的图像。普通的X11转发无法做到这一点。但是您可以使用由“真实”X服务器支持的Xpra来做到这一点,与实际GPU交互。问题是,您需要该特定的X服务器占用GPU。
更好的方法是检测是否有GLX扩展可用,如果没有,则判断是否有GPU可用,并使用其进行渲染到一个XSHM pixmap中。这样,虚拟帧缓冲服务器上的Xpra也可以工作。不幸的是,使用OpenGL实现后者在跨上下文创建API时非常难以实现。它可以做到(BT;DT),但实际上我更喜欢Vulkan进行此类操作,因为尽管Vulkan很啰嗦,但与OpenGL相比,使用Vulkan可靠性更高且需要的工作量更小。
也许(不太可能)我们会看到一些关于压缩传输像素图的X11扩展,例如高压缩XV或类似的东西。这个与纯粹的离屏GPU渲染结合起来,将会形成一个更加有效的系统。

谢谢,我会尝试的。 - Kaihong Zhang
另请参见virtualgl,更多信息请访问:https://xpra.org/trac/wiki/Usage/OpenGL - totaam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接