Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 核心动画还是opengl?_Iphone_Objective C_Cocoa Touch - Fatal编程技术网

Iphone 核心动画还是opengl?

Iphone 核心动画还是opengl?,iphone,objective-c,cocoa-touch,Iphone,Objective C,Cocoa Touch,制作像“涂鸦跳跃”这样的游戏需要opengl或核心动画就足够了吗?哪一个是你应该考虑使用OpenGL的地方? 几周来,我一直在玩一个小的等距3D游戏。我第一次使用CA,但改用了OpenGL。我的理由是: 考虑到我在做3D,切换是有意义的 我的代码中没有使用Cocoa或任何Obj-C结构,它是纯C OpenGL允许我在其他平台上使用稍微不同的包装器来测试我的应用程序 对我来说,这使OpenGL成为一项值得的投资 YMMV这是我个人的观点, 我认为用CA制作游戏很复杂。 我推荐OpenGL 在基

制作像“涂鸦跳跃”这样的游戏需要opengl或核心动画就足够了吗?哪一个是你应该考虑使用OpenGL的地方? 几周来,我一直在玩一个小的等距3D游戏。我第一次使用CA,但改用了OpenGL。我的理由是:

  • 考虑到我在做3D,切换是有意义的
  • 我的代码中没有使用Cocoa或任何Obj-C结构,它是纯C
  • OpenGL允许我在其他平台上使用稍微不同的包装器来测试我的应用程序
对我来说,这使OpenGL成为一项值得的投资


YMMV这是我个人的观点, 我认为用CA制作游戏很复杂。 我推荐OpenGL

在基于OpenGL的项目中,您应该手动逐帧绘制和移动元素以制作动画。 它需要比CA稍长的代码,但您可以轻松地同步屏幕和游戏状态。 在使用CA时,很难严格地同步图形和游戏

当然,OpenGL的性能要比CA好得多。
而且,学习OpenGL并不难

如果您没有opengl和iphone开发经验,我建议您首先使用quartz制作基本游戏,因为它将为您提供最简单的学习曲线。出于您的需要,它甚至可能在最后一场比赛中表现得足够好

下面是一个简单的自定义视图,它以30帧/秒的动画循环渲染单个精灵

@interface GameView : UIView{
  NSTimer* animTimer;
  UIImage* sprite;
}
- (void)animate:(NSTimer*)theTimer;
@end

@implementation GameView
  - (id)initWithFrame:(CGRect)frame {
    if((self=[super initWithFrame:frame])){
      sprite=[[UIImage imageNamed:@"sprite.png"] retain];
      animTimer=[[NSTimer scheduledTimerWithTimeInterval:1.0/30.0
        target:self selector:@selector(animate:)
        userInfo:nil repeats:YES] retain];
    }
    return self;
  }

  - (void)animate:(NSTimer*)theTimer{
    [self setNeedsDisplay];
  }

  - (void)drawRect:(CGRect)rect {
    [sprite drawAtPoint:CGPointMake(0,0)];
  }
@end

说得好。尽管如此,制作一个2d游戏,比如“涂鸦跳跃”并不一定需要opengl,是吗?我想做一个游戏。我刚刚开始学习这一点,所以我也想知道我应该从哪里开始呢?CA或OpenGLIt实际上取决于您将来打算使用它的位置。如果这是一个单一的游戏,而你对游戏开发没有任何兴趣,那就去CA吧。如果你最终想开发更复杂的游戏,学习OpenGL是一种有趣且非常有益的体验,在未来肯定会对你有所帮助。