我可以在无头服务器上运行GLU(OpenGL)吗?

2024-06-13 20:17:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我们试图在一个无头的GNU/linux服务器上使用GLU的镶嵌函数。我们希望使用PyOpenGL,但问题是它在调用glunnewess(分段错误)时崩溃

gdb backtrace说它在glGetError中,这使我认为GLU镶嵌需要GL上下文?或者只是PyOpenGL中的一些复杂问题?

我试图找到一些关于如何在无头(和虚拟化)机器上初始化GL上下文的信息,没有运气。有关这些主题的任何信息都将不胜感激。


Tags: 函数gnu服务器信息linux虚拟化错误分段
4条回答

VJovic链接上的大多数选项都不是硬件加速的,为了支持OpenGL Framebuffer对象扩展(请注意日期:1997!),它们中的所有选项都被弃用了。另外,正如Calvin1602所指出的,屏幕外渲染并不是整个解决方案,您需要一个openGL上下文(除了使用软件渲染的OSMesa)。

我们的研究实验室已经做了大约一年的无头opengl渲染(headless opengl rendering),我们发现最简单的事情就是让用户远程访问服务器的本地X屏幕。缺点是:(a)让远程访问x服务器被一些人认为是一种不好的安全做法,如果做得不对,(b)它打开一个虚拟窗口将弹出服务器的显示,但如果它是无头的,这应该不重要。如果您感兴趣的话,ServerFault链接中还介绍了一些其他选项。

您需要在服务器上运行一个x-screen,需要注意的是,如果您想启动一个x-screen,某些视频卡需要附加一个物理监视器。NVidia驱动程序允许您使用ConnectedMonitor option in xorg.conf.绕过这个问题。我过去使用的另一个选项是构建一个dummy monitor plug.,使系统认为附加了一个CRT监视器。可能还有其他的解决办法。

祝你好运!

https://serverfault.com/questions/186805/remote-offscreen-rendering

VJovic链接上的大多数选项都不是硬件加速的,为了支持OpenGL Framebuffer对象扩展(请注意日期:1997!),它们中的所有选项都被弃用了。另外,正如Calvin1602所指出的,屏幕外渲染并不是整个解决方案,您需要一个openGL上下文(除了使用软件渲染的OSMesa)。

我们的研究实验室已经做了大约一年的无头opengl渲染(headless opengl rendering),我们发现最简单的事情就是让用户远程访问服务器的本地X屏幕。缺点是:(a)让远程访问x服务器被一些人认为是一个糟糕的安全实践,如果做得不对,(b)它打开一个虚拟窗口将弹出服务器的显示,但如果它是无头的,这不应该重要。如果您感兴趣的话,ServerFault链接中还介绍了一些其他选项。

您需要在服务器上运行一个x-screen,需要注意的是,如果您想启动一个x-screen,某些视频卡需要附加一个物理监视器。NVidia驱动程序允许您使用ConnectedMonitor option in xorg.conf.绕过这个问题。我过去使用的另一个选项是构建一个dummy monitor plug.,使系统认为附加了一个CRT监视器。可能还有其他的解决办法。

祝你好运!

https://serverfault.com/questions/186805/remote-offscreen-rendering

您可以进行屏幕外渲染。关于它的更多信息here

这取决于图形卡和操作系统支持什么。 如果你有旧的图形芯片,你可以使用mesa操作系统库(但你得到软件渲染)。 如果是较新的,可以使用pbuffers。

最简单的:

Xvfb :5 -screen 0 800x600x24 &
export DISPLAY=:5
glxgears 

代替glxgears,替换为您的程序,并在python代码中插入一个“glutInit()”以获得一个基本的GL窗口。

更难:

重写程序以使用OSMesa库创建GL上下文

最难的:

从GLU tesselator中挖掘出勇气并将其粘贴到项目中(下载MesaLib源代码)

相关问题 更多 >