Java OpenGL状态重置

Java OpenGL状态重置,java,opengl,graphics,processing,Java,Opengl,Graphics,Processing,我有一些关于AWT和处理的问题,他们不推荐,我在大多数情况下无法获得一个清晰的开始,处理绘图循环停止工作,这些问题是多种多样的,但它们似乎主要与图形矩阵深度有关 看看这个问题是如何与启动条件相关的,如果它启动了,它不会在以后失败,或者它不会启动。我想知道是否有某种方法可以完全控制图形状态,即使以全屏运行应用程序为代价 所以问题主要是,如果可能的话,我如何在语法上重新开始图形?当然,任何其他解决方案或输入都是受欢迎的,并且它可能对处理本身有一些用处。没有办法将OpenGL上下文重置为默认状态。即使

我有一些关于AWT和处理的问题,他们不推荐,我在大多数情况下无法获得一个清晰的开始,处理绘图循环停止工作,这些问题是多种多样的,但它们似乎主要与图形矩阵深度有关

看看这个问题是如何与启动条件相关的,如果它启动了,它不会在以后失败,或者它不会启动。我想知道是否有某种方法可以完全控制图形状态,即使以全屏运行应用程序为代价


所以问题主要是,如果可能的话,我如何在语法上重新开始图形?当然,任何其他解决方案或输入都是受欢迎的,并且它可能对处理本身有一些用处。

没有办法将OpenGL上下文重置为默认状态。即使有,这也不能解决您的问题,因为您的问题似乎来自这样一个事实:当您的代码完成时,它不会将OpenGL上下文保留在输入时发现的状态。这当然不是默认状态

然而,有可能的是,您只为您的代码创建OpenGL上下文,然后临时切换到该上下文,执行您的操作,然后返回到原始上下文。窗口未绑定到OpenGL上下文,并且OpenGL上下文未绑定到窗口;只要像素格式兼容,就可以根据需要进行选择和混合,这在大多数窗口/上下文设置中都适用

如果您想要/需要访问OpenGL对象纹理,则通过处理创建的缓冲区对象可以共享不共享状态的上下文数据,这样您就安全了。只是不要修改或直接删除你的代码没有的东西


您将遇到的一个问题是使用JOGL/AWT执行所有这些操作。在快速浏览库参考时,我发现没有明显的方法来确定当前活动的OpenGL上下文绑定到哪个可绘制文件;不过,获取当前上下文很容易。但是JOGL本身是开源的,所以如果没有现成的方法来实现这一点,那么实现一个值得添加到库中的函数应该足够容易。

没有标准的OpenGL函数来实现这一点,但是您可以创建自己的函数来重置所有绑定,选项和功能与OpenGL标准中定义的默认值相同。但正如@datenwolf在他的回答中所说的,也许在不同的上下文之间切换更适合你的问题。选择最适合您的用例的解决方案