使用核心图形的优势

7
我想了解使用Core Graphics相比Open GL ES有哪些优势。我的主要问题基于以下内容:
  • 创建简单的视图动画。
  • 创建一些视觉吸引力的对象(例如类似Core Plot的图形,动画对象等)。
  • 耗时(学习和实现都需要)
  • 简单的2D游戏
  • 复杂的2D游戏
  • 3D游戏
  • 代码维护以及更清晰的代码。
  • 更容易与其他UI元素集成。
谢谢。
2个回答

21
首先,我想澄清一下一些术语。当人们谈论Core Graphics时,通常是指Quartz 2D绘图,它是一个基于矢量的2D绘图API。它用于在屏幕或PDF等离屏上下文中绘制矢量元素。Core Animation负责动画、布局和涉及矩形图层和UI元素的一些有限的3D效果。OpenGL ES是一个更低级别的API,用于与iOS设备上的图形硬件进行2D和3D绘图交互。
你在问题中提了很多要求,每种情况下最好的方式是主观的,完全取决于开发人员和他们特定的需求。然而,我可以提供一些一般性的建议。
总的来说,你会在苹果的文档和工程师的演示中看到一个建议:你最好使用解决你特定问题的最高级别的抽象层次。如果你只需要绘制2D用户界面,首先应该尝试使用Apple提供的UIKit元素来实现。如果它们没有你需要的功能,则制作自定义UIView。如果你正在设计Mac-iOS跨平台代码(如在Core Plot框架中),你可能会降级使用自定义Core Animation CALayer。这个过程中每一步的降级都需要你编写更多的代码来处理上一级已经为你处理的事情。
使用Core Animation,您可以做出惊人的许多事情,并且性能相当不错。这不仅限于2D动画,还可以扩展到一些简单的3D工作。
OpenGL ES是 iOS 设备屏幕上所看到的所有内容绘制的底部,尽管它对你来说是不可见的。因此,它为屏幕渲染提供了最少的抽象,并需要您编写最多的代码才能完成任务。但是,在希望从2D显示中提取最高性能(例如在动作游戏中)或渲染真正的3D对象和环境的情况下,它可能是必要的。

我建议写应用程序时从最高级别的抽象层开始,只有在发现无法完成某些操作或性能不符合规格要求时才下降到更低的级别。代码行数较少可以使应用程序更易于编写、调试和维护。

话虽如此,围绕OpenGL ES抽象化的一些不错的框架已经开发出来了,比如Cocos2D和Unity 3D,在许多情况下,这些框架可能会使使用OpenGL ES变得更加容易。对于每种情况,您需要评估什么对您的应用程序的特定需求最为合适。


4
基本上,如果你在制作游戏,就使用OpenGL。否则,使用CoreGraphics。CoreGraphics允许您在正常的UI代码中嵌入简单的事物。
创建简单的视图动画。 -> CG
创建一些视觉吸引力对象(例如Core Plot图形、动画对象等)。 -> CG
费时(学习和实现都需要时间) -> OpenGL和CG起初都有点棘手。
简单的2D游戏 -> OpenGL
复杂的2D游戏 -> OpenGL
3D游戏 -> OpenGL
代码维护和编写更干净的代码。 -> 不相关

你愿意用Cocos2d(例如)来学习2D游戏开发,而不是OpenGL吗?我编辑了原帖,加入了“更容易与其他UI元素集成”的内容。谢谢Andrew。 - Rui Peres
我想补充说,在某些情况下,组合方法也可以很好地发挥作用——使用CoreGraphics来绘制资产,然后使用OpenGL来排列和呈现每个帧。 - Slipp D. Thompson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接