如何从Windows机器上运行安装在Linux机器上的OpenGL应用程序?
本着帮助别人的精神,这是我已经解决的问题,因此在这里我将回答这个问题。
问题
我有:
必须在Redhat或者SuSE企业上安装的应用程序。
它具有巨大的系统要求,并且需要OpenGL。
它是需要在一台机器上一起运行的一组工具的一部分。
就工时而言,此应用程序用于时间密集型任务。
我不想坐在服务器室中处理此应用程序。
因此,问题来了...我如何从远程Windows机器上运行此应用程序?
我将概述解决方案。随意评论替代方案。该解决方案也应适用于更简单的环境。我的情况有些极端。
解决方案
解决方案
我安装了两个软件:
油灰
XMing-mesa台面部分很重要。
腻子配置
Connection->Seconds Between Keepalives: 30 Connection->Enable TCP Keepalives: Yes Connection->SSH->X11->Enable X11 forwarding: Yes Connection->SSH->X11->X display location: localhost:0:0
启动
运行Xming,它将仅启动一个过程并将一个图标放入系统任务栏中。
使用上述配置,启动腻子,指向Linux机器。
运行程序
希望成功!
我们也可以使用VNC(例如跨平台远程桌面)
X效率更高,因为它只发送绘制命令而不是像素,但是如果我们使用的是opengl,则大多数数据很可能还是渲染图像。
VNC的另一个大优点是,我们可以在服务器上本地启动程序,然后使用VNC连接到该程序,断开连接,从另一台计算机重新连接等,而不会干扰主正在运行的程序。
如果希望在本地计算机上执行OpenGL渲染,则使用Windows X服务器(例如Xming)是一个很好的解决方案。但是,如果仅通过将图像发送到本地计算机就可以在远程端进行渲染,则需要一个专门的VNC系统来处理远程OpenGL渲染,例如VirtualGL。
对于OpenGL,运行X服务器绝对是更好的解决方案。只要确保将应用程序开发为可联网即可。它不应该使用即时模式进行渲染,并且应该很少转移纹理。
为什么在这种情况下(相对于VNC),X服务器是更好的解决方案?由于我们在工作站上获得了加速,而VNC解决方案通常甚至在大型机上都没有加速。因此,只要在X服务器上缓冲数据(使用顶点数组,顶点缓冲对象,纹理对象等),速度就会比使用VNC快得多,尤其是在复杂场景中,因为VNC必须将它们分析,传输和解码为像素。