【发布时间】:2017-04-05 06:55:47
【问题描述】:
我正在使用一个使用 Opengl(处理)的库。我在不同的运行中遇到了关于图形矩阵深度的奇怪问题:
如果运行正确启动,则应用程序永远不会崩溃,否则我会在随机点收到关于矩阵深度(太多弹出或推送)的错误,然后许多后续运行必然会失败。
我检查了一下,我的 push 和 pops 正确配对,即使在我完成 push 之后,我也收到了太多 pop 之类的错误:
推
...
1 行代码
...
pop(弹出太多错误)
有没有办法以编程方式重置 opengl 的状态或无论如何管理矩阵深度问题?
【问题讨论】:
-
这看起来像是一个不同的问题,被掩盖为不平衡矩阵堆栈的使用。因此,首先为您提出一些后续问题(以帮助定位问题):。你在使用多线程吗?你有不止一个 GL 上下文。您使用的是什么操作系统和 gfx 卡?您的应用程序中是否有任何内存或资源泄漏(AMD 驱动程序非常容易受到此类问题的影响)?每个矩阵的最大推送深度是多少?此外,最好尝试使用 GLIntercept 之类的 GL 调试器来检查 GL 调用
-
确保您推送/弹出 same 矩阵堆栈。在旧版 OpenGL 中至少有 4 个矩阵堆栈:投影、模型视图、纹理和颜色(使用 glMatrixMode 切换),您必须平衡每个堆栈内的推送/弹出。
-
我在同一个图形线程中使用所有(处理)opengl 函数,但我也有一些 awt 组件,所以是的。我使用的是 ge-force 580,AMD fx 6 内核。我最多使用 3-4 级嵌套变换矩阵。我从未使用过 gl 调试器,也没有直接使用过 opengl,我使用的是处理,因为它在我不详细了解的图形功能上放置了一层。 push/pop 应该是平衡的,处理矩阵应该是一个抽象(我认为)所以我不知道我到底在做什么低级操作。
标签: java eclipse opengl processing