代码之家  ›  专栏  ›  技术社区  ›  Allisone

在带有OpenGles的iOS上,如何拥有多个视图?

  •  2
  • Allisone  · 技术社区  · 14 年前

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

    例如:从游戏菜单到实际游戏。先有菜单,然后点击(“开始游戏”)加载游戏视图,从菜单到游戏阶段有一个很好的混合/转换。

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

    2 回复  |  直到 9 年前
        1
  •  1
  •   Allisone    14 年前

    我找到了我要找的东西 cocos2d for iphone

    它为您提供图层、场景转换、即用菜单、精灵等。 所以我不再费心怎么做了,现在就用可可。

    如果你还不熟悉OpenGL,不要犹豫,它会让你的生活轻松147倍。BTW.你也可以把它和3D结合起来。

        2
  •  0
  •   mahboudz    9 年前

    如果你想在你的应用中有多个同时可见的OpenGL视图,以caeagllayers的形式,那么有一个重要的点要记住:

    [EAGLContext setCurrentContext:oglContext]

    将更改上下文,不仅仅是当前正在执行的视图,而是应用程序的所有EAGL视图。这可以通过使正在工作的其他视图冻结来实现,因为OpenGL调用现在将转到执行该操作的最后一个视图。 [eAglContext设置当前上下文:OglContext] .

    要绕过这个,你必须打电话 [eAglContext设置当前上下文:OglContext] 每次调用视图实例时,在进行任何OpenGL调用之前。

    在我的应用程序中,我只在视图的 initWithFrame . 多年来这都很管用。一旦我创建了该视图的第二个实例,第一个视图就停止更新。现在,在进行任何cvOpengles调用之前,我在更新调用中设置了上下文。