我正在通过Opengl圣经第五版。 由于最近的硬件故障,我的主机现在是一个旧笔记本电脑,不支持我的教程书的opengl标准。 我有一台运行Ubuntu 11.10的无头服务器,它具有一个支持graphics卡的function。 我想通过SSH进行编码,并将我编译的程序显示在连接到服务器的监视器上。 我怎么去做这个?
你没有详细说明你的环境,所以让我们一个接一个。 首先,如果您在以前的机器上运行Ubuntu(或者任何GNU / Linux),则很可能使用X Windows在OpenGL应用程序中显示。 考虑到这个假设,所有你需要的是在你的“无头”服务器上工作的X Windows服务器(注意当你连接一个显示器时,它不再是无头的)。 如果你没有安装它(例如,如果你安装了Ubuntu Server版本的话),你需要先安装它,检查这个:
请注意,由于各种原因,不build议在纯服务器上安装X(或任何不必要的东西),请参阅上述链接中的参数对照GUI部分,以查看其中的一些,并决定是否您想要做的事情。
当你已经安装了(你可以通过在terminal上运行dpkg -s xserver-xorg-code并检查Status行来检查),然后启动它,你可以通过启动例如xeyes或其他示例X应用程序来testing它。 首先,确保你有DISPLAY环境variables集:
$ echo $DISPLAY :0.0
由此:
你可以看到这个variables有如下格式:
hostname:displaynumber.screennumber
上面的hostname被省略,意思是localhost 。 如果这样做(例如,运行xeyes实际上显示那些跟踪你的鼠标的那些有趣的眼睛),你是全部设置为X-wise。
如果你没有安装SSH服务器,你需要安装它 – 这是相当简单的,这是许多教程之一:
通过在笔记本电脑上运行ssh <target IP>来检查你的ssh是否工作正常,例如:
$ ssh 10.0.0.5
如果你的服务器的IP是10.0.0.5。 如果成功了,你就全都定了。
既然您可以SSH连接到服务器,您只需从SSH连接中运行xeyes 。 这可能是因为你的DISPLAYvariables没有设置,所以如果echo $DISPLAY没有返回任何东西,你可以运行这个:
$ export DISPLAY=:0.0
只要你使用bash ,可能就是这种情况。
另一方面,如果你想在笔记本电脑上运行应用程序,并只显示在服务器上,你只需要改变DISPLAYvariables就可以了,例如:
$ export DISPLAY=10.0.0.5:0.0
假设你的服务器的IP是10.0.0.5。 你可以通过xeyes在terminal上面尝试上面的内容,你应该再次看到你的服务器显示器上显示的那些有趣的眼睛。
希望这可以帮助。
我有类似的问题。 好的解决scheme是VirtualGL http://www.virtualgl.org/
这很容易设置。 这是手册 。
它在服务器上运行应用程序,并将OpenGL输出redirect到客户端作为原始帧(为了获得更好的性能而进行压缩)。