2

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

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

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

4

2 回答 2

1

好吧,我在cocos2d for iphone中找到了我想要的东西

它为您提供图层、场景转换、准备就绪的菜单、精灵等。所以我不再为如何做到这一点而烦恼,现在只使用 cocos。

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

于 2010-10-12T01:00:21.513 回答
0

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

[EAGLContext setCurrentContext:oglContext]

将更改上下文,不仅针对当前正在执行的视图,还针对您应用程序的所有 EAGL 视图。这可以通过使其他正在工作的视图冻结来表现出来,因为 OpenGL 调用现在将转到执行[EAGLContext setCurrentContext:oglContext].

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

在我的应用程序中,我只在视图的initWithFrame. 这工作了好几年。一旦我创建了该视图的第二个实例,第一个视图就会停止更新。现在,在进行任何 CVOpenGLES 调用之前,我在更新调用中设置了上下文。

于 2015-05-02T05:31:29.217 回答