Fon*_*nix 3 opengl-es objective-c ios glkit
所以我一直在用一些OpenglES做一些iphone开发,但是当我在我的效果上调用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时搞乱该计划的一部分.我有一种感觉它与不放弃某种资源与上下文和效果有关,但我无法找到任何关于删除上下文和效果(可能因为你不需要但我不确定).
我希望有人遇到同样的问题,可以回答我的问题,我希望它不仅仅是一个愚蠢的错误,因为我一直试图解决这个问题:)
谢谢
Fon*_*nix 10
经过多次痛苦和苦难后,我终于找到了解决问题的方法.我不完全确定为什么这是一个问题,但在OpenGL部分(也就是RollViewController.m)中创建上下文不是这样做的方法.相反,您应该在程序的整个生命周期中创建一次,并将glkview的当前上下文设置为您所创建的上下文.也许有人可以告诉我为什么重新创建上下文是一个坏主意.
在我的代码中,我有一个在视图和菜单之间传递的配置文件对象,以便它们可以与相同的数据进行通信,所以我只是在我的配置文件对象中定义了一个公共上下文,这样一切都可以访问上下文而不是创建他们自己(并打破).
| 归档时间: |
|
| 查看次数: |
1757 次 |
| 最近记录: |