如何在iPhone上的OpenGLES中创建缩放效果?

时间:2008-09-19 16:38:35

标签: iphone objective-c opengl-es

我有一个OpenGL ES游戏,我正在一起攻击。其中一部分涉及查看一个大的“地图样”区域,然后双击一个部分以“放大”它。你将如何使用OpenGL ES来提供这种效果(假设它可能需要放大地图的不同部分)。

我听说过glScale和glOrtho,但我不清楚它们实际上是如何工作的,因为整个openGL世界对我来说都是新的。

2 个答案:

答案 0 :(得分:2)

使用Core Animation可以更好地实现您描述的2-D缩放。 NSView(及其NDA的iPhone版本)在您更改框架时提供隐式动画。在这种情况下,您需要做的就是将框架的origin.x和origin.y以及size.width和size.height设置为这样的值,使视图大于屏幕。如果您这样做并将其包装在适当的调用中以启动和提交动画,您将免费获得缩放动画。 Core Animation在幕后为其动画使用OpenGL。

但是,如果您觉得必须在OpenGL中执行此操作,我可以建议您在http://www.sunsetlakesoftware.com/2008/08/05/lessons-molecules-opengl-es处做一些小写吗?我是Molecules的作者,这是一款免费的iPhone三维分子可视化工具,在开始这个项目之前我对OpenGL ES一无所知。 3周后,它在App Store中推出。

OpenGL调用非常简单,围绕它们的数学运算会让你头疼。放大对象实际上非常简单,可以通过移动相机或实际物理缩放对象来完成。对于Molecules,我使用glScalef(x,y,z)函数来扩展对象的路径,其中x,y和z是您希望应用于模型对象的比例因子。我逐步进行缩放。也就是说,我没有在每个渲染帧的开始处重置变换矩阵(使用glLoadIdentity()),而是根据用户输入稍微缩放它。如果用户将手指分开5%,我将比例增加5%。

同样,我建议使用Core Animation进行你描述的2-D缩放,但在OpenGL ES中实现相同的结果并不难。

答案 1 :(得分:0)

恭敬的是,答案是花几天时间学习OpenGL的基础知识,网上有比这更好的地方。