目前我正在使用OSMesa进行离屏渲染。我在linux(RHEL)命令行界面上运行它。它工作得很好,但渲染消耗了大量的时间。基本上我在屏幕外运行opengl动画并动态捕捉帧并使用ffmpeg创建视频。所以,我的问题是,是否可以使用GPU进行屏幕外渲染,以便使渲染过程更快。 我知道我可以使用FBO,但我认为他们需要窗口支持,因为linux CLI我没有。 简而言之,无论如何,在我的情况下是否使用FBO或者什么是加速渲染过程的最佳解决方案?
答案 0 :(得分:1)
所以,我的问题是,是否可以使用GPU进行屏幕外渲染,以使渲染过程更快。
原则上是的,但到目前为止还没有关于如何做到这一点的标准API。如果您正在使用NVidia GPU,则可以将无头EGL与Nvidia专有驱动程序一起使用:https://devblogs.nvidia.com/parallelforall/egl-eye-opengl-visualization-without-x-server/
使用内核DRM和Mesa OpenGL驱动程序,可以在没有显示服务器的单个进程中配置和操作GPU。有一个名为" kmscube"的演示,我把它分成了我的GitHub并对它进行了一些小修改:https://github.com/datenwolf/kmscube在当前状态下kmscube将绘制到屏幕上,但它应该可以通过某种方式更改连接器的选择,从而获得完整的屏幕外渲染。
整个Wayland基础设施都围绕着为客户提供任意帧缓冲区渲染的可能性,然后合成器组合起来,所以看看Wayland合成器如何为Wayland客户分配屏幕外帧缓冲区的方式也值得一看在