所以我一直在做一些 iphone 开发,里面有一些 OpenglES,但是当我在效果上调用 prepareToDraw 时,我遇到了一个相当奇怪的错误。简而言之,我的程序模拟掷骰子(尝试学习objective-c和opengl)。该程序在大多数情况下运行良好,我可以使用我为我的应用程序编写的所有内容(其物理错误但稍后会修复)。在我使用了包含 OpenGL 的部分之后,问题就出现了。
该程序包含 2 个菜单,您必须通过才能到达使用 OpenGL 的屏幕,一旦您使用了应用程序 OpenGL 部分并返回上一个菜单,然后再次尝试返回 OpenGL 部分,我得到一个打印出 GL ERROR: 0x0501。根据我的效果,我将其缩小为由 prepareToDraw 方法引起的。关于它的另一个奇怪的部分是,如果我回去,然后再前进,OpenGL 再次工作,并且可以一次又一次地重复,以便它在你进入 OpenGL 部分时每两次工作和中断。
我一直在寻找与我类似的问题,但每次它都与加载不是二次幂纹理的纹理有关,这对我没有帮助,因为我什至还没有使用纹理,只是彩色顶点。
我粘贴了我的两个代码文件,问题应该出在哪里
Dice.m:http ://pastebin.com/ze1DEEzs 在 draw 方法中,您会看到我的打印输出已经缩小了问题所在,即 prepareToDraw 方法。(第 308 行)
RollViewController.m:http ://pastebin.com/VycwAh3R 这个文件是我设置效果和上下文等的地方,所以我必须在这里做错了,导致 prepareToDraw 方法在我每次运行 OpenGL 的第二次时都会出错程序的一部分。我有一种感觉,这与不放弃与上下文和效果有关的某种资源有关,但我找不到有关删除上下文和效果的任何信息(可能是因为您不需要,但我不确定)。
我希望有人遇到同样的问题并且可以回答我的问题,我希望这不仅仅是一个愚蠢的错误,因为我已经尝试解决这个问题一段时间了:)
谢谢