作为一个更大项目的一部分,我正在尝试使用JOGL实现一个工具,它可以将3D渲染导出为位图格式。我们通过创建GLJPanel并将场景绘制到它上面,然后提取位图来实现这一目标。只要系统上至少有一个可见窗口(不一定是包含我们要绘制的面板的窗口),这一切都很正常。
但是如果我们在没有任何可见窗口的情况下尝试执行此操作,则GLJPanel将无法绘制。查看JOGL源代码,我发现它必须拥有有效的对等体(即必须调用addNotify())才能进行绘制。文档称addNotify()仅在面板成为可见窗口层次结构的一部分时才会被调用。改用GLCanvas并没有太大区别,失败模式也不同。WindowsOnscreenGLDrawable.realized未设置,这意味着lockSurface返回
希望能提供任何有关如何创建Java应用程序以在不使其窗口可见的情况下创建和导出3D场景的帮助。
但是如果我们在没有任何可见窗口的情况下尝试执行此操作,则GLJPanel将无法绘制。查看JOGL源代码,我发现它必须拥有有效的对等体(即必须调用addNotify())才能进行绘制。文档称addNotify()仅在面板成为可见窗口层次结构的一部分时才会被调用。改用GLCanvas并没有太大区别,失败模式也不同。WindowsOnscreenGLDrawable.realized未设置,这意味着lockSurface返回
LOCK_SURFACE_NOT_READY
,导致makeCurrent()失败。希望能提供任何有关如何创建Java应用程序以在不使其窗口可见的情况下创建和导出3D场景的帮助。