如何在iPhone的OpenGLES中创建缩放效果?
我有一起一起学习的OpenGL ES游戏。其中一部分涉及查看大型"类似于地图"的区域,然后双击其中一部分以"放大"。我们将如何使用OpenGL ES提供此效果(假设它可能需要放大地图的不同部分)。
我听说过glScale和glOrtho,但是我不清楚它们的实际工作方式,因为整个openGL世界对我来说还是很新的。
解决方案
相应地,答案是花几天时间学习OpenGL的基础知识,网上有比这里更好的地方。
我们使用Core Animation可以更好地实现我们描述的2D缩放。更改框架时,NSView(及其NDA的iPhone同类产品)会提供隐式动画。在这种情况下,我们需要做的就是将框架的origin.x和origin.y以及size.width和size.height设置为这样的值,以使视图大于屏幕。如果执行此操作并将其包装在适当的调用中以开始和提交动画,则将免费获得缩放动画。核心动画在幕后使用OpenGL进行动画制作。
但是,如果我们觉得必须在OpenGL中执行此操作,是否可以建议我在http://www.sunsetlakesoftware.com/2008/08/05/lessons-molecules-opengl-es上进行一些撰写?我是iPhone的免费3D分子可视化工具Molecules的作者,在启动该项目之前,我对OpenGL ES一无所知。 3周后,它在App Store上线。
OpenGL调用非常简单,围绕它们的数学运算会让我们头疼。实际上,放大对象非常简单,可以通过移动相机或者实际缩放对象来完成。对于分子,我使用了glScalef(x,y,z)函数缩放对象,其中x,y和z是我们希望应用于模型对象的缩放因子。我逐步进行缩放。也就是说,我不会在每个渲染帧的开始处重置转换矩阵(使用glLoadIdentity()),而只是根据用户输入对其进行缩放。如果用户将手指分开5%,则比例会增加5%。
再次,我建议我们使用Core Animation进行我们描述的2D缩放,但是要在OpenGL ES中获得相同的结果并不难。