在我的iOS应用程序中,我根据给定点(由CGPoint
指定)进行大量三角计算,然后根据这些计算创建一些转换矩阵,最终用于OpenGL绘图(通过{ {1}})。我想通过随着时间的推移改变基本GLKit
来创建一个动画,但我不确定我应该用什么方法来制作动画。
我真正想要的是一个API,它允许我指定在每次迭代时调用的函数,就像CGPoint
一样,但是如果我能够轻松地利用它,它会非常酷/ out等。每次迭代需要修改的唯一数据是我的主NSTimer
,其余的渲染可以从中确定。
我考虑过的方法,但放弃了:
核心动画:我正在使用OpenGL绘制,因此Core Animation似乎没有帮助。
CGPoint
:这并没有给我贝塞尔曲线的灵活性,看起来非常手动。
基于给定帧率的心跳:我只需要在点变化时重新渲染,并且大部分时间它都是静止的。不觉得心跳是正确的方法。
有什么东西像我描述的那样存在吗?我必须自己写吗?或者我只是误解了为我提供的工具,这表明我应该再看看我是如何绘制我的图形的?
答案 0 :(得分:2)
您可以使用GLKView
和GLKViewController
进行渲染,并使用update:
的{{1}}方法更改点。
答案 1 :(得分:2)
我同意另一张海报。假设你可以使用iOS 5,你应该使用GLKView和GLKViewController。设置为每次屏幕刷新时调用一次(在内部使用CADisplayLink。)如果您不想只是iOS 5,可以自己设置CADisplayLink。
核心动画对OpenGL渲染无用。但是,您可以使用Core Animation的设计来驱动您的设计。核心动画(与Cocoa的其余部分一样)构建在OpenGL之上,因此您可以自己完成CA所做的一切。它只需要工作。 (有时很多工作。)
核心动画使用基于动画而非基于帧的动画模型。每次渲染场景时,它都会根据自动画开始以来经过的时间决定应该应用多少运动。如果它在渲染帧时落后,则下一帧会进一步移动,因此随时间的运动是一致的。
就缓和/缓和时间而言,你也可以自己做。你需要阅读动画时间。它使用输入时间与输出时间的非线性映射,使用贝塞尔曲线在开始和结束时更改曲线的形状。