美文网首页
iOS图形学(四):iOS中的绘图框架

iOS图形学(四):iOS中的绘图框架

作者: 康小曹 | 来源:发表于2021-09-16 11:48 被阅读0次

一、各种渲染框架

iOS 中的绘图相关的架构如下:

iOS绘图架构

其中 OpenGL ES 在 iOS12 之后被正式废弃,并使用新框架 Metal 替换;

1. Quartz、Quartz 2D、QuartzCore

三个概念傻傻分不清楚,那么我们一个一个来看:

  1. Quartz

Quartz 是 MacOS 上的 framework,iOS 中不能使用。包括 Quart Composer、PDFKit、ImageKit 三大部分。这个框架功能很齐全,但是也相对比较重量级,实际开发中使用也相对较少,具体可以参阅官方文档:Quartz

通过 #import <Quartz/Quartz.h> 来进入,该头文件包含的内容如下:

Quartz

如上图,引入了 QuartzCore,这个又是什么呢?

  1. QuartzCore

QuartzCore 就是 Core Animation,也就是文章最初的那张框架图中的 Core Animation。Core Animation 就不用多说了吧,掌握着绘制的整个流程,还能够做动画,这也是后文的重点,这里就不赘述了。

Core Animation 在 iOS 上合 MacOS 上都可以使用,但是不完全一样,来看看头文件;

iOS 中:

QuartzCore-iOS

MacOS 中:

QuartzCore-MacOS

其中的区别就不赘述了,可以直接去官方文档查阅:Core Animation

  1. Quartz 2D

Quartz 2D 就是 Core Graphic,是基于 Quartz 实现的 2D 渲染接口集(framework),具有轻量、无与伦比的输出保证度(unmatched output fidelity)。

也就是说 Quartz 的功能是最齐全的,但是也相对重量级。 Apple 根据需要,则基于 Quartz 实现了轻量级的 Core Graphic ,主要用于 2D 渲染,功能包括:基于路径的绘制、颜色管理、离屏渲染、模板、渐变、图片数据管理、图像创建、图片遮罩、PDF的解析展示和创建等。在 MacOS 上, Core Graphic 还包括一些用于硬件展示、窗口系统、底层用户输入事件的服务。

具体可以参阅官方文档,这里也不赘述了:Core Graphics

另外,需要注意的是 Quartz 2D 的渲染接口是基于 CPU 实现的,不调用 GPU,而 OpenGL 和 Metal 是基于 GPU 实现的渲染。后文会详细讲述;

2. OpenGL 、OpenGL ES、Metal、DirectX

这几个名词都不是严格意义上的 Api,而是标准协议,OpenGL 更加通用,而 Metal 由 Apple 创建、实现并维护,DirectX 由微软创建、实现并维护。而 OpenGL ES 则是 OpenGL 的子集,更加适用于嵌入式设备;

协议只是一套标准,在 CPU 和 GPU 上都可以实现,所以有的 CPU 也是支持 OpenGL 协议的。但是现在一般都是由 GPU 来实现 OpenGL 相关的协议;

iOS 中的 OpenGLES.framework 就是针对 OpenGL ES 协议,使用了 C 语言进行了实现。其实现同 Metal 一样,是基于 GPU 进行实现的:

About OpenGL ES OpenGL ES

OpenGL ES 已经被弃用,如果有兴趣可以查阅官方文档:OpenGL ES

为了使 OpenGL ES 相关的接口更加适配 iOS/MacOS 系统,提升性能和流畅度,在 iOS12 之后 Apple 就正式使用 Metal 替换了 OpenGL ES;Metal 的渲染也是基于 GPU 实现的,功能很强大,可以好好学习学习:Metal

3. Core Image

Core ImageCore Graphics 恰恰相反,Core Graphics 用于在 运行时创建图像,而 Core Image 是用来处理 创建的图像 。简而言之就是图片处理框架,Core Image 框架拥有一系列现成的图像过滤器,能对已存在的图像进行高效的处理。

大部分情况下,Core Image 会在 GPU 中完成工作,但如果 GPU 忙,会使用 CPU 进行处理:

Core Image

CGImageCreate 之类的方法也属于 Core GraphicsCore Image 框架的 Api 以 CI 开头;

4. 总结

  1. OpenGL/OpenGL ES 和 Metal 都是基于 GPU 实现的 3D 渲染框架;
  2. Quartz 是重量级的绘图框架,功能强大。而 Quartz 2D 就是基于此实现的轻量级的 2D 渲染框架;
  3. Core Animation 更像是一个组织者,在 3D 的维度上,本着 GPU 渲染优先的原则,基于自己的一套 Core Animation Pipline 来完成图元/纹理的生成、纹理渲染成 bitmap、视频控制器的交互、动画的实现等;
  4. Core Image 和 Quartz 2D 都是渲染框架,只不过 Quartz 2D 是将图元渲染成 bitmap,而 Core Image 是对已经渲染完成的 bitmap/image 添加滤镜效果;

相关文章

网友评论

      本文标题:iOS图形学(四):iOS中的绘图框架

      本文链接:https://www.haomeiwen.com/subject/kxsrgltx.html