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渲染结合起来,将会形成一个更加有效的系统。