我正在尝试通过 SSH 运行 OpenGL 2.1+ 应用程序。
[我的电脑] --- ssh 连接 --- [远程机器](应用程序)
我使用 X 转发来运行此应用程序,考虑到这一点,我认为此应用程序有几种方法来执行 3D 图形:
- 使用LIBGL_ALWAYS_INDIRECT,我的电脑上的图形硬件就可以使用了。根据这个帖子这通常仅限于 OpenGL 1.4 版本。
- 在远程计算机上使用 Mesa 软件渲染。这支持更高版本的 OpenGL,但使用 CPU。
然而,就我而言,远程机器有一个不错的显卡。所以而不是软件渲染,我想知道它是否可以做到硬件而是远程渲染。
另外,如果有其他方法可以使用我的机器的显卡,那就太好了。
答案1
选择不一定是在间接渲染和软件渲染之间,更准确地说是在直接渲染和间接渲染之间进行选择。直接渲染将在X客户端(远程机器)上完成,然后渲染结果将传输到X服务器进行显示。间接渲染将 GL 命令传输到 X 服务器,这些命令将使用服务器的硬件进行渲染。由于您想在远程计算机上使用 3D 硬件,因此您应该选择直接渲染(并接受通过网络传输渲染的光栅图像的开销)。
如果您的应用程序无法使用 OpenGL 1.4,直接渲染是您唯一的选择。
答案2
我曾经使用 ssh 远程设置来运行修补过的 opengl 驱动程序。但这涉及一些黑客行为,例如劫持远程 X 服务器进行渲染(登录远程计算机,ssh 并将 DISPLAY 设置为:0)。对于您的情况,分离屏幕外 xserver 更有意义。我不记得是否可以在离屏模式下远程启动 xserver,但加载 GPU 驱动程序。 VirtualGL 项目似乎承诺它完全支持您正在寻找的东西。我还没有尝试过,但网站看起来很有希望。
http://www.virtualgl.org/About/Introduction
其他替代方案是 vnc 和 xdmcp。它们允许访问完整的远程桌面环境。