在iOS上使用OpenGLES如何拥有多个视图?

时间:2010-08-14 09:55:44

标签: opengl-es ios multiple-views

在iOS上,如果我想覆盖两个视图,然后从一个场景混合到另一个场景。

例如:从游戏菜单到实际游戏。首先是菜单,然后点击(“开始游戏”)加载游戏视图,并从菜单到游戏阶段进行良好的混合/转换。

这不是混合的具体问题,而是如何处理OpenGL应用程序中的多个视图。我已经阅读并使用了一些关于如何绘制线条,对象,闪电,颜色和类似物的基础知识,但是当我将它们放在一个真实的(不仅仅是一个静态视图)OpenGLES应用程序中时,我完全是绿色的。我的意思是你必须使用不同的观点,对吧?或者这个设计模式是否具有不同的视图控制器和视图,我们在日常的UIKit编程中都习惯了它们在OpenGLES中不适用?因为我无法实现它。我找不到任何例子。

2 个答案:

答案 0 :(得分:1)

我在cocos2d for iphone

找到了我想要的东西

它为您提供图层,场景转换,准备去菜单,精灵等。 所以我不再打扰如何做到这一点,现在就使用cocos。

如果您不熟悉OpenGL,请不要犹豫,它会让您的生活更轻松147 *。顺便说一句......你也可以将它与3d结合起来。

答案 1 :(得分:0)

如果您希望在应用程序中以CAEAGLLayers的形式拥有多个同时可见的OpenGL视图,那么需要记住一点:

RewriteEngine On RewriteRule index.html index.php RewriteRule history.html historyp.php RewriteRule h-general.html historyp.php?page=overall RewriteRule h-tajik.html historyp.php?page=tajik RewriteRule h-woman.html historyp.php?page=woman RewriteRule timeline.html hronika.php RewriteRule t-tajik.html tajikchron.php RewriteRule t-overall.html overchron.php RewriteRule time.html chronm.php RewriteRule heroes.html heroesp.php

将更改上下文,不仅针对当前正在执行的视图,还针对应用的所有EAGL视图。这可以通过制作其他正在冻结的视图来体现,因为OpenGL调用现在转到执行[EAGLContext setCurrentContext:oglContext]的最后一个视图。

要解决这个问题,每次调用视图实例时都必须调用[EAGLContext setCurrentContext:oglContext],然后再进行任何OpenGL调用。

在我的应用中,我只在视图的[EAGLContext setCurrentContext:oglContext]中设置了一次上下文。多年来一直很好。一旦我创建了该视图的第二个实例,第一个视图就停止了更新。现在,在进行任何CVOpenGLES调用之前,我在更新调用中设置了上下文。