我想创build一个video游戏自动渲染testing框架。
我想testing通常用OpenGL渲染到窗口的应用程序。 相反,我想要它渲染成图像文件进行进一步评估。 我想在没有GPU的Linux服务器上执行此操作。
我怎样才能做到这一点,对评估的应用程序影响最小?
一些清晰的说法:
理想情况下,您的答案将解释如何在无头Linux服务器上设置环境,使我可以启动任意OpenGL二进制文件并将其输出呈现为图像。 如果这是不可能的,我愿意提供任何build议。
为您的X服务器使用Xvfb
。 部署在任何现代Linux发行版上的Mesa的安装,如果没有找到支持的GPU,应该自动回到软件光栅化。 您可以使用任何X11屏幕抓取程序截图; 甚至ffmpeg -i x11grab
将工作。
fbdev / miniglx可能是你正在寻找的东西。 http://www.mesa3d.org/fbdev-dri.html我没有使用它,所以我不知道它是否适用于您的目的。
另一种方法是在没有任何桌面环境的xinit下启动xserver。 该设置使用经过良好测试的代码路径,使其更适合运行测试。 miniglx可能有没有人注意到,因为它不是每天都使用的错误。
要捕捉渲染输出到图像可以完成与LD_PRELOAD技巧来包装glXSwapBuffers。 基本的想法是在应用程序和gl库之间添加自己的swapbuffers函数,您可以使用glReadPixels下载渲染帧,然后使用自己喜欢的图像库将该数据写入图像/视频文件。 在glReadPixels完成之后,您可以调用库glXSwapBuffers,使交换发生,就像在真实桌面中发生的一样。
prog子目录已经从主git仓库中删除,你可以从git://anongit.freedesktop.org/git/mesa/demos找到它。