GLP OpenGL 扩展发生了什么?

GLP OpenGL 扩展发生了什么?

我需要使用 OpenGL 进行无头硬件加速服务器渲染,并发现这可以通过 pbuffers 和帧缓冲区对象 (FBO) 实现。但如今这些方法仍然需要上下文,并且如果没有正在运行的 X 服务器就无法运行。

我找到了 Sun 的一个演示文稿(现已删除,但在网络存档中),内容正是我想要对标题执行的操作“GLP OpenGL 扩展,无需窗口系统的 OpenGL 渲染”

该提案发生了什么?目前是否有任何替代方案或正在进行任何类似的开发?

答案1

最新版本的开源 Linux OpenGL 驱动程序(即 Mesa [1] 提供的驱动程序)支持在没有窗口系统的无头机器上进行渲染。 Intel Mesa 团队(我所属的团队)使用此功能在没有 X 服务器的无头机器上运行 OpenGL 测试。

我和一位同事通过使用 libEGL 的 GBM 后端之上的 Waffle [3] 框架,向 Mesa 的测试套件 Piglit [2] 添加了对无头渲染的支持。 (GBM 代表通用缓冲区管理器,用于在没有中间显示服务器的情况下管理 GPU 缓冲区)。

如果您希望采用这种方法,一个可能的阻碍是,据我所知,带有 GBM 的 EGL 仅受开源 Linux 驱动程序支持。如果您的应用程序必须支持其他 Unix 或专有驱动程序,则此方法将不起作用。

如果您有兴趣使用 EGL/GBM,我可以向您指出一些示例代码。

(顺便说一句,如果您不熟悉 EGL,它是 GLX 的现代替代品,其 API 独立于窗口系统。如果您熟悉 GLX,那么您应该对 EGL 感到熟悉,因为这两个 API 非常相似)。

[1]http://mesa3d.org

[2]http://piglit.freedesktop.org

[3]http://people.freedesktop.org/~chadversary/waffle

相关内容