在Iphone上有多个OpenGL视图?

时间:2011-01-18 16:59:15

标签: iphone opengl-es

我得到了如何做1个屏幕的opengl视图。 但.... 如何为游戏或绘图程序提供多个opengl(1.1)视图? 例如: 在绘图程序启动后,有人用三指触摸,它会在屏幕的前三分之一处显示一个工具包,用于进行绘图调整。 或者是具有动画闪屏的游戏进入实际游戏。信息按钮和其他在opengl中完成的选择。

重点是我想在opengl中完成所有操作,并且需要知道如何进行多个opengl视图。

感谢您的任何建议!!

2 个答案:

答案 0 :(得分:2)

实现多个OpenGL ES渲染表面并不困难,您只需要创建多个CAEAGLLayers支持它们的视图。

通常,出于性能原因,不建议使用多个OpenGL ES层。您通常希望为所有需要此内容的内容提供一个不透明的全屏OpenGL ES层。您可以在多个上下文中呈现的任何内容都应该能够在一个上下文中绘制。

但是,您描述的所有内容都可以使用标准UIViews和Core Animation轻松完成。在不透明的OpenGL ES内容上叠加UIViews只会导致我的测试中渲染帧率降低约5%,我认为这是完全可以接受的。这就是我在Molecules中所做的,您可以查看该应用程序的代码,看看在OpenGL ES内容之上层叠这些控件是多么简单。

我建议使用这条路线,因为重新实现按钮和其他UI元素将在OpenGL ES中使用比使用本机控件更多的代码。你将花费大量时间重新发明可用于改善应用其他领域的方向盘。

答案 1 :(得分:0)

我建议不要使用多个视图。相反,每次只需设置不同的视口,并使用不同的LookAt位置进行绘制。