【概念释疑】区分2D绘制中的框架

学习文章

  • 绘制像素到屏幕上
  • What's the difference between Quartz Core, Core Graphics and Quartz 2D?
  • What is the difference between Quartz2D, UIKit, Core Animation, Core Graphics, Open GL ES, Cocoa2D, etc.?

绘制流程

【概念释疑】区分2D绘制中的框架_第1张图片
绘制流程.png

Display 的上一层便是图形处理单元 GPU,GPU 是一个专门为图形高并发计算而量身定做的处理单元。这也是为什么它能同时更新所有的像素,并呈现到显示器上。它并发的本性让它能高效的将不同纹理合成起来。我们将有一小块内容来更详细的讨论图形合成。关键的是,GPU 是非常专业的,因此在某些工作上非常高效。比如,GPU 非常快,并且比 CPU 使用更少的电来完成工作。通常 CPU 都有一个普遍的目的,它可以做很多不同的事情,但是合成图像在 CPU 上却显得比较慢。

GPU Driver 是直接和 GPU 交流的代码块。不同的GPU是不同的性能怪兽,但是驱动使他们在下一个层级上显示的更为统一,典型的下一层级有 OpenGL/OpenGL ES.

OpenGL(Open Graphics Library) 是一个提供了 2D 和 3D 图形渲染的 API。GPU 是一块非常特殊的硬件,OpenGL 和 GPU 密切的工作以提高GPU的能力,并实现硬件加速渲染。对大多数人来说,OpenGL 看起来非常底层,但是当它在1992年第一次发布的时候(20多年前的事了)是第一个和图形硬件(GPU)交流的标准化方式,这是一个重大的飞跃,程序员不再需要为每个GPU重写他们的应用了。

OpenGL 之上扩展出很多东西。在 iOS 上,几乎所有的东西都是通过 Core Animation 绘制出来,然而在 OS X 上,绕过 Core Animation 直接使用 Core Graphics 绘制的情况并不少见。对于一些专门的应用,尤其是游戏,程序可能直接和 OpenGL/OpenGL ES 交流。事情变得使人更加困惑,因为 Core Animation 使用 Core Graphics 来做一些渲染。像 AVFoundation,Core Image 框架,和其他一些混合的入口。

要记住一件事情,GPU 是一个非常强大的图形硬件,并且在显示像素方面起着核心作用。它连接到 CPU。从硬件上讲两者之间存在某种类型的总线,并且有像 OpenGL,Core Animation 和 Core Graphics 这样的框架来在 GPU 和 CPU 之间精心安排数据的传输。为了将像素显示到屏幕上,一些处理将在 CPU 上进行。然后数据将会传送到 GPU,这也需要做一些相应的操作,最终像素显示到屏幕上。

这个过程的每一部分都有各自的挑战,并且许多时候需要做出折中的选择。

QuartzCore/Core Graphics/OpenGL

QuartzCore 和 OpenGL 是绘制技术的核心,我们应用到的绘制框架和API是基于它们(事实上,它们两不是并列的, QuartzCore 应该是基于 OpenGL ).它们两个的区别是, QuartzCore 用于2D,而 OpenGL 则2D/3D都可以,其中 OpenGL ES 是用于移动端的.

Core Graphics 是苹果利用 Quartz 写的框架.

【概念释疑】区分2D绘制中的框架_第2张图片
区分绘制框架.png

苹果官方 Quartz2D for iOS 样例代码

如图:

【概念释疑】区分2D绘制中的框架_第3张图片
SampleCode

下载地址

你可能感兴趣的:(【概念释疑】区分2D绘制中的框架)