通过 SSH 编写 opengl 代码,通过机器的显示器运行程序

通过 SSH 编写 opengl 代码,通过机器的显示器运行程序

我正在学习《Opengl Bible》第 5 版。由于最近发生硬件故障,我的主要机器现在是一台旧笔记本电脑,不支持我的教程书的 opengl 标准。我有一台运行 Ubuntu 11.10 的无头服务器,它有一个功能强大的显卡。我想通过 SSH 编写代码,并将编译后的程序显示在连接到服务器的显示器上。我该怎么做?

答案1

您没有指定太多有关环境的信息,所以让我们逐一介绍。首先,如果您在之前的机器上运行 Ubuntu(或任何 GNU/Linux),您很可能使用 X Windows 在您的 OpenGL 应用程序中进行显示。根据这一假设,您所需要的只是在“无头”服务器上运行一个可运行的 X Windows 服务器(请注意,当您连接显示器时,它不再是无头的)。如果您没有安装它(例如,如果您安装了 Ubuntu Server 版本,情况就会如此),您需要先安装它,请检查以下内容:

请注意,出于各种原因,不建议在纯服务器上安装 X(或任何不必要的东西),请参阅反对 GUI 的论点请参阅上面链接中的部分来查看其中的一些内容,然后决定是否要这样做。

安装完成后(例如,您可以通过dpkg -s xserver-xorg-code在终端中运行并检查Status行来检查)并启动它,您可以通过启动 egxeyes或其他示例 X 应用程序来测试它。首先,确保您已DISPLAY设置环境变量:

$ echo $DISPLAY
:0.0

由此:

您可以看到该变量具有以下格式:

hostname:displaynumber.screennumber

省略了hostname上述含义localhost。如果此方法有效(例如,运行后xeyes实际上会显示那些跟踪鼠标的有趣的眼睛),则您已全部设置完毕。

如果您尚未安装 SSH 服务器,则需要安装它 - 这非常简单,这里是众多教程之一:

从你的笔记本电脑上运行检查 ssh 是否正常工作ssh <target IP>,例如:

$ ssh 10.0.0.5

例如,您的服务器 IP 为 10.0.0.5。如果成功,则一切就绪。

现在您可以通过 SSH 连接到服务器,您需要做的就是xeyes从 SSH 连接中运行。当您使用 SSH 时,您的变量可能DISPLAY未设置,因此如果echo $DISPLAY没有返回任何内容,您可以运行以下命令:

$ export DISPLAY=:0.0

只要你使用bash,很可能就是这种情况。

另一方面,如果您想在笔记本电脑上运行应用程序本身并仅在服务器上显示,那么您所要做的就是更改变量DISPLAY即可,例如:

$ export DISPLAY=10.0.0.5:0.0

假设您的服务器 IP 为 10.0.0.5。您可以在终端中尝试上述操作,xeyes然后您应该会再次看到那些有趣的眼睛显示在服务器的显示器上。

希望这可以帮助。

答案2

我遇到了类似的问题。VirtualGL 是解决这个问题的好方法http://www.virtualgl.org/

设置起来非常简单。以下是手动的

它在服务器上运行应用程序,并将 OpenGL 输出作为原始帧重定向到客户端(为了获得更好的性能而进行压缩)。

相关内容