我有一个 OpenGL ES 游戏,我正在一起破解。其中一部分涉及查看一个大的“类似地图”的区域,然后双击一个部分以“放大”它。您将如何使用 OpenGL ES 来提供这种效果(假设它可能需要放大地图的不同部分)。
我听说过 glScale 和 glOrtho,但我不清楚它们实际上是如何工作的,因为整个 openGL 世界对我来说都是非常新的。
我有一个 OpenGL ES 游戏,我正在一起破解。其中一部分涉及查看一个大的“类似地图”的区域,然后双击一个部分以“放大”它。您将如何使用 OpenGL ES 来提供这种效果(假设它可能需要放大地图的不同部分)。
我听说过 glScale 和 glOrtho,但我不清楚它们实际上是如何工作的,因为整个 openGL 世界对我来说都是非常新的。
您描述的二维缩放可能会更好地使用核心动画来实现。NSView(及其 NDA'd 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 3-D 分子可视化工具,在我开始这个项目之前,我对 OpenGL ES 一无所知。3 周后,它在 App Store 中发布。
OpenGL 调用非常简单,围绕它们的数学运算会让您头疼。放大对象实际上非常简单,可以通过移动相机或实际缩放对象来完成。对于分子,我使用 glScalef(x,y,z) 函数缩放对象,其中 x、y 和 z 是您希望应用于模型对象的缩放因子。我逐步进行缩放。也就是说,我不会在每个渲染帧的开头重置转换矩阵(使用 glLoadIdentity()),而是根据用户输入稍微缩放它。如果用户将手指分开 5%,我将比例增加 5%。
同样,我建议 Core Animation 用于您描述的 2-D 缩放,但在 OpenGL ES 中实现相同的结果并不难。
恕我直言,答案是花几天时间学习 OpenGL 的基础知识,网上有比这里更好的地方。