我开始编写一个特殊的使用图形程序,我倾向于使用OpenGL来生成图形。最终目标是使用基本框架来容纳2D和3D图形的架构。
将生成的图形导出为图像是一个关键特征,最终我将编写代码来生成图形2D投影的矢量图像。但是,与此同时,我希望能够将图形导出为高分辨率图像 - 图像明显大于应用程序窗口。
我正在用Java编写这个应用程序并使用LWJGL OpenGL包装器。我已经弄清楚如何截取显示窗口的截图,但我没有成功创建更大的图像。我试图制作隐形画布,但我无法使其发挥作用。
文档说here Canvas的isDisplayable()方法必须返回true,为此我已经重写isDisplayable()方法总是返回true,所以它不应该关心是否它在一个框架中,但这不起作用。相反,它会引发以下错误:
java.lang.RuntimeException: No OpenGL context found in the current thread.
at org.lwjgl.opengl.GLContext.getCapabilities(GLContext.java:124)
at org.lwjgl.opengl.GL20.glDeleteProgram(GL20.java:311)
问题似乎是它还需要来自顶层窗口的一些属性,但即使我创建一个虚拟Frame类,我也会得到与之前相同的错误,直到我在帧上调用setVisible(true)。 / p>
有谁知道如何伪造这些图形属性,以为它有一个可见的顶级窗口?有没有人知道更简单的方法?