Opengl es 在iOS上使用核心动画与使用Cocos2D和OpenGL ES是否合适?

Opengl es 在iOS上使用核心动画与使用Cocos2D和OpenGL ES是否合适?,opengl-es,cocos2d-iphone,core-animation,Opengl Es,Cocos2d Iphone,Core Animation,我在一本书中完成了一个教程,但球是一个20x20像素的图像,它跳过了帧,移动不太平稳。无论是在模拟器上还是在iPhone4S(真实的东西)上都是如此。代码没有使用NSTimer(可能较慢),而是使用CADisplayLink和UIImageView setFrame来制作动画 iOS上的核心动画是否不太适合开发动画类型的游戏?如果这是一场游戏 入侵者() 突破(作为教程中的游戏) 阿卡诺德 愤怒的小鸟/割断绳子/水果忍者 对于这些类型的游戏,核心动画真的适合写(2)以上吗?对于(1)、(3)和(

我在一本书中完成了一个教程,但球是一个20x20像素的图像,它跳过了帧,移动不太平稳。无论是在模拟器上还是在iPhone4S(真实的东西)上都是如此。代码没有使用
NSTimer
(可能较慢),而是使用
CADisplayLink
UIImageView setFrame
来制作动画

iOS上的核心动画是否不太适合开发动画类型的游戏?如果这是一场游戏

  • 入侵者()
  • 突破(作为教程中的游戏)
  • 阿卡诺德
  • 愤怒的小鸟/割断绳子/水果忍者

  • 对于这些类型的游戏,核心动画真的适合写(2)以上吗?对于(1)、(3)和(4),Cocos2D或OpenGLES更适合做这项工作。Cocos2D和OpenGL ES的性能非常接近。这是真的吗?

    Cocos2D经常被关注,因为它易于编程常见的游戏逻辑,如碰撞检测和精灵动画、逐帧、缩放和其他在游戏开发中非常常见的过程,在这些过程中,您可以将多个动画串在一起,然后进行组合、排序、执行回调等。这是发动机的最大优点之一

    然而,表现是另一回事。Cocos提供了批处理节点,它将所有图形元素组合到一个OpenGL调用中,而不是在每个帧中将每个元素单独“绘制”到屏幕上;这可以显著提高性能,尤其是对于大型图形。如果你有跳帧,我想知道Cocos中的批处理精灵是否是丢失的链接


    我对核心动画印象深刻,希望它能在游戏的性能问题上保持自己的风格。我的理解是,CA和Cocos一样,也是建立在OpenGL ES之上的,所以我希望在这两个方面都能取得好的效果。在Cocos中这样做可能更简单,因为它是为游戏开发而在内部设计和优化的。

    如果您在2D应用程序中遇到性能问题,这可能是由于不了解如何从CoreGraphics获得最有效的结果,而不是切换到OpenGL将解决的问题。2D游戏可以很好地使用CoreGraphics,您只需要从正确的方法开始。首先,您不应该在每个CADisplayLink回调上重新渲染整个视图。相反,请设置包含多个CALayer对象的UIView。像这样设置层:CALayer.contents=(id)cgImage,然后让系统在x、y或动画元素更改时处理渲染。您只需要定位元素并定义移动元素的动画。通过这种方法,系统将在后台将动画图像缓存在图形卡上,并使用GPU操作重新绘制