【问题标题】:Advantages of using Core Graphics使用核心图形的优势
【发布时间】:2011-10-05 23:43:41
【问题描述】:

我想知道使用 Core Graphics 而非 Open GL ES 可以获得哪些优势。我的主要问题是基于此:

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

谢谢。

【问题讨论】:

    标签: iphone ios opengl-es core-graphics


    【解决方案1】:

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

    您在问题中提出了很多问题,并且对每种方案中最佳方案的判断是主观的,完全取决于开发人员及其特定需求。不过,我可以提供一些一般性提示。

    一般来说,您会在 Apple 的文档和工程师的演示文稿中看到的建议是,您最好使用最高级别的抽象来解决您的特定问题。

    如果您只需要绘制一个 2-D 用户界面,您应该尝试的第一件事是使用 Apple 提供的 UIKit 元素来实现它。如果他们没有您需要的功能,请制作自定义 UIView。如果您正在设计 Mac-iOS 跨平台代码(如在 Core Plot 框架中),您可能会选择使用自定义 Core Animation CALayers。此过程中的每一步都需要您编写更多代码来处理上述级别为您完成的事情。

    你可以用 Core Animation 做很多令人惊讶的事情,而且性能非常好。这不仅限于 2-D 动画,还可以扩展到一些简单的 3-D 作品。

    OpenGL ES 位于您在 iOS 设备屏幕上看到的所有内容的绘制之下,尽管这不会暴露给您。因此,它为屏幕渲染提供了最少的抽象,并且需要您编写最多的代码来完成某件事。但是,在您希望从 2-D 显示中提取最大性能(例如,在动作游戏中)或渲染真正的 3-D 对象和环境的情况下,它可能是必要的。

    再次,我倾向于建议人们在编写应用程序时从最高抽象级别开始,只有当他们发现他们无法做某事或性能不在他们试图达到的规范范围内时才下拉。更少的代码行使应用程序更易于编写、调试和维护。

    也就是说,围绕抽象出 OpenGL ES 开发了一些不错的框架,例如 cocos2D 和 Unity 3D,这可能会使在许多情况下使用 OpenGL ES 更容易。对于每种情况,您都需要评估什么对您的应用程序的特定需求有意义。

    【讨论】:

      【解决方案2】:

      基本上,如果您正在制作游戏,请使用 OpenGL。否则,请使用 CoreGraphics。 CoreGraphics 让您可以做一些嵌入到普通 UI 代码中的简单事情。

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

      创建一些视觉上吸引人的对象(例如 Core Plot 等图形、动画对象等)。 -> CG

      耗时(学习和实施) -> OpenGL 和 CG 一开始都很难。

      简单的 2D 游戏 -> OpenGL

      复杂的 2D 游戏 -> OpenGL

      3D 游戏 -> OpenGL

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

      【讨论】:

      • 你会在 2D 游戏中用 Cocos2d(例如)交换 OpenGL 的学习吗?我编辑了我的原始帖子,我添加了“更容易与其他 UI 元素集成。”。谢谢安德鲁。
      • 我要补充一点,组合方法也适用于某些情况——使用 CoreGraphics 预先绘制资源,然后使用 OpenGL 排列并呈现每一帧。
      猜你喜欢
      • 1970-01-01
      • 2012-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-23
      • 2016-02-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多