是否可以使用 LWJGL 以无头模式渲染到 FBO?

Posted

技术标签:

【中文标题】是否可以使用 LWJGL 以无头模式渲染到 FBO?【英文标题】:Is it possible to render to FBO in a headless mode using LWJGL? 【发布时间】:2012-06-06 19:32:55 【问题描述】:

我需要使用 OpenGL 的 Java 包装器 LWJGL 开发一个应用程序。该应用程序将以无头模式在远程服务器上运行。我试图了解是否以及如何考虑到 GL 上下文在LWJGL(和其他 API)是通过 Java UI 元素(如 Canvas 等)创建的。在我的情况下,我需要能够在不创建窗口的情况下初始化 GL 上下文,因为绘图目标将是像素缓冲区将从其渲染到纹理的 FBO。虽然已经在 LWJGL 中调用了 PBuffer(我猜是像素缓冲区)对象,但有一种可能的解决方案。它确实不需要通过窗口创建 GL 上下文,因为它在内部创建它。我不想同时使用这种方法,因为它比较旧概念(和弱)比帧缓冲区对象,因为我使用的是 OGL 3.3 ->。所以我真的不想与任何旧的管道遗留混合。

我基本上有两个问题:

1.我可以在不设置窗口的情况下创建上下文以用于基于 FBO 的渲染(无头模式)吗?

2.如果对第一个问题的回答是否定的,那么我可以在远程服务器上运行这样的应用程序,该应用程序仍为上下文访问而初始化窗口吗?

更新: 这个问题可以结束了。我通过使用 PBuffers 完成的第一次初始化测试它以设置上下文。然后 FBO 渲染按预期工作。

【问题讨论】:

【参考方案1】:

我自己找到了答案。应该首先设置 PBuffer 以创建无头 GL 上下文。创建完成后,我们可以使用 FBO 将帧渲染为图像。

【讨论】:

我能够使用 PBuffer 创建无头 GL 上下文。之后我使用了 FrameBuffer。你能告诉我它的运行例子吗?我无法更新缓冲区。当我创建它的屏幕截图时,我可以再次看到一个图像。可能有一些方法可以更新缓冲区。

以上是关于是否可以使用 LWJGL 以无头模式渲染到 FBO?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以将默认渲染缓冲区附加到 FBO?

OpenGL 渲染到 FBO

将两个图像附加到 fbo 以进行 mrt 渲染

使用 LWJGL 对 GUI 进行部分渲染 [关闭]

Android OpenGLES2.0——FBO离屏渲染

openGL FBO 复制到纹理导致黑色/深色图像