作为一个更大项目的一部分,我正在尝试使用 JOGL 实现一个设施,它将 3D 渲染导出为位图格式。为此,我们创建一个 GLJPanel 并绘制我们想要的场景,然后提取位图。只要系统在屏幕上至少有一个可见窗口,这一切都可以正常工作 - 不一定是包含我们正在绘制的面板的窗口。
但是如果我们尝试在不使任何窗口可见的情况下执行此操作,则 GLJPanel 将不会绘制。逐步浏览 JOGL 源代码,我发现它不会绘制,除非它有一个有效的对等点 - 基本上除非 addNotify() 已经调用它。文档说 addNotify() 仅在面板成为可见窗口层次结构的一部分时才被调用。更改为 GLCanvas 并没有太大区别 - 故障模式不同。未设置 WindowsOnscreenGLDrawable.realized ,这意味着 lockSurface 返回LOCK_SURFACE_NOT_READY
,导致 makeCurrent() 失败。
欢迎提供有关如何创建可以创建和导出 3D 场景而无需使其窗口可见的 Java 应用程序的任何帮助。