Java 以编程方式重置opengl

Java 以编程方式重置opengl,java,eclipse,opengl,processing,Java,Eclipse,Opengl,Processing,Im使用一个使用Opengl(处理)的库。我在不同的运行中遇到有关图形矩阵深度的奇怪问题: 如果一次运行正确启动,那么应用程序就不会崩溃,否则我会在随机点中得到一个关于矩阵深度的错误(太多的pop或push),然后许多后续运行注定会失败 我检查了,我的推送和弹出正确配对,即使在推送之后,我也会出现错误,例如弹出过多: 推 1行代码 弹出(弹出过多错误) 是否有某种方法可以通过编程方式重置opengl的状态或以任何方式管理矩阵深度问题?处理有一个可以使用的resetMatrix()。有关更多信

Im使用一个使用Opengl(处理)的库。我在不同的运行中遇到有关图形矩阵深度的奇怪问题:

如果一次运行正确启动,那么应用程序就不会崩溃,否则我会在随机点中得到一个关于矩阵深度的错误(太多的pop或push),然后许多后续运行注定会失败

我检查了,我的推送和弹出正确配对,即使在推送之后,我也会出现错误,例如弹出过多:

1行代码

弹出(弹出过多错误)


是否有某种方法可以通过编程方式重置opengl的状态或以任何方式管理矩阵深度问题?

处理有一个可以使用的
resetMatrix()。有关更多信息,请访问


但是你所描述的听起来很可疑,所以你应该试着找出为什么你会看到错误,而不是仅仅解决它们。请发布一个演示该问题的说明。

这看起来像是另一个被掩盖为不平衡矩阵堆栈使用的问题。因此,首先要向您提出一些后续问题(帮助定位问题):。您使用多线程吗?您是否有多个GL上下文。您使用的是什么操作系统和gfx卡?您的应用程序中是否存在内存或资源泄漏(AMD驱动程序很容易受到类似事件的影响)?每个矩阵的最大推送深度是多少?另外,尝试GLIntercept之类的GL调试程序来检查GL调用也是一个好主意。确保推/弹出相同的矩阵堆栈。在传统OpenGL中,至少有4个矩阵堆栈:投影、模型视图、纹理和颜色(使用glMatrixMode切换),您必须在每个堆栈中平衡推送/弹出。我在同一图形线程中使用所有(处理)OpenGL函数,但我也有一些awt组件,所以是的。我使用的是ge force 580,AMD fx 6核。im最多使用3-4级嵌套转换矩阵。我从来没有使用过gl调试器,也没有直接使用opengl,我使用的是处理,因为它在图形函数上加了一层我不太了解的内容。push/pop应该是平衡的,处理矩阵应该是一个抽象(我想),所以我不知道我在做什么低级操作。重置矩阵将当前矩阵重置为正常矩阵(1,1,1,1 diag)。矩阵堆栈用于进行嵌套变换,如旋转对象的平移ecc。。。我不知道我是否可以在这个问题上做一个MCVE,问题本身就是应用程序在增长时缺乏健壮性。我对某种方式感兴趣,如果有任何方式来调整opengl状态的话。@Yggdrasil-Like已经被指出,这听起来像是代码中的一个bug,特别是你把矩阵推到了平衡之外。