在通过ssh远程连接的服务器上运行没有窗口的OpenGL程序

3
我正在尝试运行一个OpenGL程序,它不需要窗口,该程序会创建一个文件。在Debian xfce上,一切都很顺利。
然后,我尝试从另一台计算机使用ssh运行程序,如果xfce连接了显示器,我可以使用DISPLAY=:0编译和运行程序(因此glut只打开了一毫秒并关闭)。
问题是当我重新启动并断开显示器时,xfce不会启动GUI,并且glut无法启动。
VirtualGL不是我想要的,隐藏窗口也不是我想要的,我想从终端运行OpenGL程序,而不需要X GUI。或者能够强制xfce启动GUI并登录到GUI,以便我可以启动glut。
最好能提供一个小例子。
1个回答

1
使用当前的驱动模型,您想要做的事情在可靠的方式中是不可能的。迄今为止为Linux存在的所有OpenGL实现都绝对需要某种窗口(即使是一个不可见的、隐藏的1×1像素小窗口)来创建OpenGL上下文。
请注意,随着Wayland和更大的基于EGL的OpenGL基础设施的引入,将来不久OpenGL基础设施将发生改变。但我们还没有到那里。
此外,如果您可以使用缓慢的软件实现,Mesa有一个名为“OSMesa”的辅助库,它提供了一个OpenGL上下文,可以将其渲染到您的程序提供的内存区域。但OSMesa不会使用任何GPU加速。

1
有没有办法在没有显示器的情况下启动窗口?如果我登录到Linux,然后拔掉显示器的连接线并运行glut,它可以正常运行,但是如果重新启动就不行了。我需要一种强制Linux在没有连接显示器的情况下运行X的方法,然后再找到一种让它登录的方式,这样我就可以通过ssh运行freeglut了。谢谢你的回复。 - Eph Bee
2
@user3797639:即使没有显示器连接,您也应该始终能够启动X服务器。如果X服务器拒绝启动,则可以在xorg.conf中强制添加显示配置。或者,您可以通过使用150欧姆电阻将绿色模拟输出引脚拉到信号地来欺骗显卡以认为已连接显示器。 - datenwolf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接