支持GPU但不支持窗口的屏幕外渲染



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

所以,我的问题是,是否可以使用GPU进行屏幕外渲染,以使渲染过程更快。

原则上是的,但到目前为止还没有关于如何做到这一点的标准API。如果您正在使用NVidia GPU,您可以将无头EGL与英伟达专有驱动程序一起使用:https://devblogs.nvidia.com/parallelforall/egl-eye-opengl-visualization-without-x-server/

使用Kernel DRM和Mesa OpenGL驱动程序,可以在没有显示服务器的情况下在单个进程中配置和操作GPU。有一个名为"kmscube"的演示,我把它移植到我的GitHub中,并对它做了一些小修改:https://github.com/datenwolf/kmscube在当前状态下,kmscube将绘制到屏幕上,但应该可以通过某种方式更改连接器的选择,以获得完整的屏幕外渲染。

此外,整个Wayland基础设施的核心是为客户端提供任意帧缓冲区以供渲染,然后由合成器组合,因此,研究Wayland合成器如何为Wayland客户端分配屏幕外帧缓冲区也值得一看。

最新更新