我的项目由一个网站组成,在这个网站上,用户输入一个音乐XML文件,然后收到一个视频,这个视频是由OpenGL提供的。(类似于合成) 基于该XML文件。我正在使用python来解析XML文件,并获得所有有用的信息。有了这些信息,我使用PyOpenGL和glut来创建动画,并使用OpenCV将每一帧保存为视频。
我能够在本地运行该程序,并且它可以工作。现在我试图在Wamp服务器中使用该程序。所以我的问题是,我如何去做这件事?我的计划是用PHP调用该程序。 shell_exec()
但似乎什么都没有发生。我测试过 shell_exec()
在简单的测试文件上使用xvfb,返回一个字符串就可以了。我做了一些研究,发现我可以使用xvfb进行无头服务器渲染。有什么想法可以让我用PyOpenGLGlut来实现吗?另外,是否可以使用PHP的 shell_exec()
或者我应该使用其他东西来调用我的Python程序?
首先要决定你是否需要GPU加速。如果你的目标系统甚至没有GPU,那么试图磨练一个GPU加速的OpenGL上下文创建是没有什么用的。
接下来,你应该接受这样的事实:你将无法再使用GLUT,因为GLUT是以创建屏幕上的窗口为目标而实现的。
如果你可以在没有GPU的情况下使用软件光栅化,你应该考虑一下OSMesa。https:/mesa3d.orgosmesa.html
如果你需要GPU加速,请检查你要运行的GPU。如果是NVidia的,请查看他们关于如何使用EGL创建无头渲染上下文的优秀博客。https:/devblogs.nvidia.comegl-eye-opengl-visualization-without-x-server。
如果是AMD或英特尔GPU,那么理论上EGL应该也能用。然而使用DRM+GBM通常会产生更好的效果。有一个示例项目可以在以下网站找到 https:/github.comedublegl。