OpenGL vs Cocos2d:select什么?

我明白,cocos2d是非常简单的API,我可以用它来做简单而巨大的2D,甚至有时候是3D游戏/应用程序。 我也明白,OpenGL更复杂,更低层次的API等。

题:
实施2D / 3D游戏有什么好处?
为什么我们需要学习OpenGL,如果我们有简单的框架,如cocos2d?
你可以用OpenGL做什么,你不能用cocos2d做什么?

提前致谢!

实施2D / 3D游戏有什么好处?

  • 很难说,但更高层次的API总是在那里让你更容易。 例如,你正在写一个2D射击。 你可能会使用一个游戏循环,你会想要使用精灵,让这些在屏幕上移动。 你可能想要像爆炸发生的animation。 你将最终编写自己的更高级别的API来完成这些事情。 Cocos2D已经为您解决了这些问题。 任何其他的框架世界应该已经解决了它。

为什么我们需要学习OpenGL,如果我们有简单的框架,如cocos2d?

  • 如果你想要框架的标准行为,特别是绘图部分,你应该进入openGL。 如果有什么你不喜欢的东西,你可能会发现自己重新实现了一个基础框架类。 例如,查看Cocos2D 2.0中使用的着色器。 如果你喜欢一些特殊的混合模式,如着色效果,你将无法免费获得。 有一个CCSprite的颜色属性,但这可能不是你期待的结果。 所以你必须编写你自己的着色器,并把它插入你想以不同的方式显示的精灵。

你可以用OpenGL做什么,你不能用cocos2d做什么?

  • 这个比较实际上并不成功,因为cocos2d有利于绘图部分的opengGL来构build更高级别的API,并让您的游戏开发人员更轻松。

Cocos2d是围绕OpenGL的二维特征的封装(如下所示: http : //www.cocos2d-iphone.org/about )。 在它的底层,它本身使用OpenGL ES来实现它的function。 这很好,因为这意味着性能开销会很小,所以你可以开始使用更简单的API,而不必沉浸在OpenGL的更大的学习path中。

然而,它只有强大的2D支持,如果你打算编写后期的3D游戏,你将失去Cocos2d的所有优点:为什么要用2d框架重写3D渲染引擎,引擎盖下使用了非常强大的3D引擎? 你放弃了很多不必要的工作。

所以更简单的答案是:对于2D OpenGL的Cocos2d。

如果你想开始OpenGL ES,这是一个非常好的初学者教程: http : //iphonedevelopment.blogspot.it/2009/05/opengl-es-from-ground-up-table-of.html