渲染是计算机或者是其他终端设备将软件代码解码之后展示在用户的面前,而今天我们就通过案例分析来了解一下,计算机渲染原理与iOS渲染方法。
1、计算机渲染原理
于现代计算机系统,简单来说可以大概视作三层架构:硬件、操作系统与进程。对于移动端来说,进程就是app,而CPU与GPU是硬件层面的重要组成部分。CPU与GPU提供了计算能力,通过操作系统被app调用。
CPU(CentralProcessingUnit):现代计算机整个系统的运算核心、控制核心。
GPU(GraphicsProcessingUnit):可进行绘图运算工作的专用微处理器,是连接计算机和显示终端的纽带。
CPU和GPU其设计目标就是不同的,它们分别针对了两种不同的应用场景。CPU是运算核心与控制核心,需要有很强的运算通用性,兼容各种数据类型,同时也需要能处理大量不同的跳转、中断等指令,因此CPU的内部结构更为复杂。而GPU则面对的是类型统一、更加单纯的运算,也不需要处理复杂的指令,但也肩负着更大的运算任务。
image.png
因此,CPU与GPU的架构也不同。因为CPU面临的情况更加复杂,因此从上图中也可以看出,CPU拥有更多的缓存空间Cache以及复杂的控制单元,计算能力并不是CPU的主要诉求。CPU是设计目标是低时延,更多的高速缓存也意味着可以更快地访问数据;同时复杂的控制单元也能更快速地处理逻辑分支,更适合串行计算。
而GPU拥有更多的计算单元ArithmeticLogicUnit,具有更强的计算能力,同时也具有更多的控制单元。GPU基于大吞吐量而设计,每一部分缓存都连接着一个流处理器(streamprocessor),更加适合大规模的并行计算。
二、ios系统渲染方法
在硬件基础之上,iOS中有CoreGraphics、CoreAnimation、CoreImage、OpenGL等多种软件框架来绘制内容,在CPU与GPU之间进行了更高层地封装。
GPUDriver:上述软件框架相互之间也有着依赖关系,不过所有框架终都会通过OpenGL连接到GPUDriver,GPUDriver是直接和GPU交流的代码块,直接与GPU连接。
OpenGL:是一个提供了2D和3D图形渲染的API,它能和GPU密切的配合,高效地利用GPU的能力,实现硬件加速渲染。OpenGL的高效实现(利用了图形加速硬件)一般由显示设备厂商提供,而且非常依赖于该厂商提供的硬件。OpenGL之上扩展出很多东西,如CoreGraphics等终都依赖于OpenGL,有些情况下为了更高的效率,比如游戏程序,甚至会直接调用OpenGL的接口。
CoreGraphics:CoreGraphics是一个强大的二维图像绘制引擎,是iOS的核心图形库,常用的比如CGRect就定义在这个框架下。
CoreAnimation:在iOS上,几乎所有的东西都是通过CoreAnimation绘制出来,它的自由度更高,使用范围也更广。
CoreImage:CoreImage是一个高性能的图像处理分析的框架,它拥有一系列现成的图像滤镜,能对已存在的图像进行高效的处理。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请在707945861群中学习了解。