Draw offscreen with JOGL
作为一个更大项目的一部分,我正在尝试使用 JOGL 实现一个工具,它将 3D 渲染导出为位图格式。为此,我们创建一个 GLJPanel 并绘制我们想要的场景,然后提取位图。只要系统在屏幕上至少有一个可见窗口,这一切都可以正常工作 – 不一定是包含我们正在绘制的面板的窗口。
但是如果我们尝试这样做而不使任何窗口可见,GLJPanel 将不会绘制。单步浏览 JOGL 源代码,我发现它不会绘制,除非它有一个有效的对等体 – 基本上除非 addNotify() 已经调用它。文档说 addNotify() 仅在面板成为可见窗口层次结构的一部分时才被调用。更改为 GLCanvas 并没有太大区别 – 故障模式不同。未设置 WindowsOnscreenGLDrawable.realized,这意味着 lockSurface 返回
欢迎任何关于如何创建可以创建和导出 3D 场景而无需使其窗口可见的 Java 应用程序的帮助。
不确定我是否应该回答我自己的问题,但我发现现在似乎可行。
关键是 GLPbuffer,它是一个离屏 GLAutoDrawable,可以在没有可见组件层次结构的情况下创建。
这篇文章有助于让它发挥作用。在我确认它完全正常运行之前,我将不再接受这个答案。
我也应该说答案来自这个论坛,而不是我自己的微薄大脑。
您应该在此处查看方法:glReadPixels() 更多信息。基本上它或多或少像这样工作:
1
2 3 4 5 6 7 8 9 10 |
Init(); //doing some initializations in your JOGL app
glDrawBuffer(GL_BACK); DrawGLScene(); //doing drawing here glReadBuffer(GL_BACK); //Copy the image to the array imageData |
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/267541.html