我正尝试进行简单的使用游戏OpenGLES。 我有两个EAGLViews(菜单和游戏视图)。 每个视图都有自己的viewController。 意见初始化通过的viewController的initWithNIBName方法来完成。 而当我想表明的观点,我简单地使用主窗口addSubview方法。 游戏显示是在启动时只初始化一次。 只有当it's需要的菜单视图被初始化。 问题是,当我从游戏视图进入菜单,然后回来,然后我重绘的比赛来看,不顺心的事。 (我在drawView函数绘制之前设置EAGLContext,所以上下文可能是正确的)。 难道你不知道问题出在哪里? 或者,如果整个切换管理错了,给我和建议请。 感谢您的答复。
Answer 1:
我猜你是有纹理显示不正确的故障?
我不知道背后的OpenGL真实的东西,但是这是我的假设:你每次回来的时间EAGLView,EAGLView的EAGLContext改变。 (如果你已经复制并从OpenGLES模板粘贴)后的背景下处于正确状态的纹理只能加载,否则你无法加载任何纹理。 现在,离开EAGLView,学成归来,你是从实例化一个的initWithCoder新EAGLContext:(NSCoder *)编码器:
context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES1];
if (!context || ![EAGLContext setCurrentContext:context]) {
[self release];
return nil;
}
那么,如何才能保持这种背景下? 我让全球。 就那么简单。 当EAGLView被再次被实例化,有它检查“全局” EAGLContext是否是零或没有。 如果它是零,只是初始化它,否则什么也不做。 而且永远不会释放或除非你想退出你的程序的dealloc这个全球EAGLContext。
这对我的作品,但同样,我上面的假设可能不正确。 如果有人知道真实的东西,请训斥我。 我也虚心需要指导。 我想真正知道为什么出现这种情况?为什么我们要做这一点。
顺便说一下,这是否回答你的问题,Jenicek?
文章来源: opengles view switching problem