2011-10-05 61 views
7

我想知道使用Core Graphics代替Open GL ES会带来什么样的优势。我的主要问题是基于此:使用Core Graphics的优势

  • 创建简单的视图动画。
  • 创建一些视觉吸引力的对象(像Core Plot的图形,例如动画对象等)。
  • 耗时(包括学习和贯彻)
  • 简单的2D游戏
  • 复杂的2D游戏
  • 3D游戏
  • 代码维护广告也更干净的代码。
  • 与其他UI元素更容易集成。

谢谢。

回答

21

首先,我要在这里澄清一点的术语。当人们谈论Core Graphics时,他们通常指的是Quartz 2D绘图,它是一个基于2D向量的绘图API。它用于将矢量元素绘制到屏幕上或屏幕外上下文(如PDF)。 Core Animation负责动画,布局以及一些涉及矩形图层和UI元素的有限3D效果。 OpenGL ES是一个较低级别的API,用于与iOS设备上的图形硬件进行二维和三维绘图。

你问你的问题很多,而且对什么是最好在每个场景中的判断是主观的,完全取决于开发商和他们的特殊需求。但是,我可以提供一些常规提示。

一般情况下,你会发现在苹果的文档和演示文稿中的工程师看到一个建议是,你最好使用抽象的最高水平,解决您的特定问题。

如果您只是需要画一个2-d的用户界面,你应该尝试的第一件事就是实现这个使用苹果提供的UIKit元素。如果他们没有你需要的功能,那就制作自定义的UIViews。如果您正在设计Mac-iOS跨平台代码(就像在Core Plot框架中一样),那么您可以选择使用自定义Core Animation CALayers。在这个过程中的每一步都需要你编写更多的代码来处理上面为你做的事情。

你可以用Core Animation做一些令人惊讶的事情,性能相当不错。这不仅限于2D动画,还可以扩展到一些简单的3D工作。

OpenGL ES在iOS设备屏幕上显示的所有图形下方,尽管这不会暴露给您。因此,它为屏幕渲染提供了最少的抽象,并且需要您编写最多的代码才能完成某些工作。但是,在想要从二维显示(例如动作游戏)中提取最高性能或渲染真实三维物体和环境的情况下,这可能是必要的。

同样,我倾向于建议人们在编写应用程序时从最高抽象层次开始,只有当他们发现他们不能做某些事情或者性能不符合他们试图创建的规范时才会下降。更少的代码行使应用程序更易于编写,调试和维护。

也就是说,有一些很好的框架已经围绕OpenGL ES进行了抽象,比如cocos2D和Unity 3D,这些框架可能使许多情况下使用OpenGL ES更容易。对于每种情况,您都需要评估对于您的应用程序的特定需求有意义。

4

基本上,如果您正在制作游戏,请使用OpenGL。否则,使用CoreGraphics。 CoreGraphics可以让你在普通的UI代码中嵌入简单的东西。

创建简单的视图动画。 - > CG

创建一些视觉吸引力的对象(图形样核心地块例如,动画对象,等等)。 - > CG

耗时(学习和实现) - > OpenGL和CG起初都很难。

简单的2D游戏 - > OpenGL的

复杂的2D游戏 - > OpenGL的

3D游戏 - > OpenGL的

代码维护广告也更干净的代码。 - >无关

+0

你会在2D游戏中使用Cocos2d(例如)交换OpenGL的学习吗?我编辑了我的原始文章,我添加了“与其他UI元素更容易集成”。谢谢安德鲁。 – Peres

+0

我想补充一点,组合方法在某些情况下也可以很好地工作 - 使用CoreGraphics预先绘制资源,然后使用OpenGL来安排并显示每一帧。 –