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

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

有帮助吗?

解决方案

使用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中实现相同的结果并不难。

其他提示

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top