具有 GPU 支持但不支持窗口的离屏渲染

off-screen rendering with GPU support BUT without windowing support

目前我正在使用 OSMesa 进行离屏渲染。我 运行 在 linux (RHEL) 命令行界面上使用它。它工作得很好,但渲染会消耗大量时间。基本上我 运行 opengl 动画离屏和动态捕获帧并使用 ffmpeg 创建视频。所以,我的问题是,是否可以使用 GPU 进行离屏渲染以使渲染过程更快。 我知道我可以使用 FBO,但我认为它们需要 window 支持,而由于 linux CLI,我没有。 所以简而言之,在我的情况下是否可以使用 FBO 或者加速渲染过程的最佳解决方案是什么?

So, my question is, whether it is possible to use GPU for off-screen rendering in order to make rendering process faster.

原则上是的,但到目前为止还没有关于如何做到这一点的标准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 客户分配屏幕外帧缓冲区以供使用的方式也是如此值得一看