在尝试异步绘制前,我去了解了这些iOS渲染知识

本文介绍了iOS系统中图像渲染的原理,包括FPS、CPU与GPU的角色、位图概念,以及像素如何显示在屏幕上。重点讨论了离屏渲染的原理、影响因素和调试方法,为优化iOS应用的性能提供了深入理解。
摘要由CSDN通过智能技术生成

前言

  • 这一块主要为了面试讲项目准备,尽量理论与实践相结合吧,能把搜到的资料都实现最好
  • 目前主要是为tableView的优化进行研究,把涉及到的异步绘制【图层问题】,网络请求中的cell中空间高度缓存这些就用到最好

FPS

  • FPS是图像领域中的定义,是指画面每秒传输帧数,通俗来讲就是指动画或视频的画面数。FPS是测量用于保存、显示动态视频的信息数量。每秒钟帧数越多,所显示的动作就会越流畅。通常,要避免动作不流畅的最低是30。
  • iPhone的FPS为60,也就是说它在一秒钟内会刷新60次,每次间隔大概16.7ms,也就是说我们的iPhone每次有16.7ms的时间来处理事件
  • 而如果在这个时间内没能成功刷新,就会直接丢弃这一帧,下一次一起整上去【也就是说,不会原地刷新】
  • 这样子帧的丢失反映到用到用户体验上就 = APP卡顿了

CPU

  • 中央处理器(CPU,central processing unit)作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元
  • 放在我们的iOS中,可以理解为CPU负责软件的操作,对象创建、对象调整、对象销毁、布局计算、文本计算、文本渲染、图片解码、图像的绘制等操作是放在CPU上执行的

GPU

  • 图形处理器(英语:Graphics Processing Unit,缩写:GPU),又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上做图像和图形相关运算工作的微处理器。
  • 放在iOS中,GPU处理的是硬件层面的事,纹理的渲染、视图混合、离屏渲染都是在GPU上执行的

位图

  • 位图是由称作像素(图片元素)的单个点组成的。这些点可以进行不同的排列和染色以构成图样。当放大位图时,可以看见赖以构成整个图像的无数单个方块。扩大位图尺寸的效果是增大单个像素,从而使线条和形状显得参差不齐。然而,如果从稍远的位置观看它,位图图像的颜色和形状又显得是连续的。用数码相机拍摄的照片、扫描仪扫描的图片以及计算机截屏图等都属于位图。位图的特点是可以表现色彩的变化和颜色的细微过渡,产生逼真的效果,缺点是在保存时需要记录每一个像素的位置和颜色值,占用较大的存储空间。常用的位图处理软件有Photoshop(同时也包含矢量功能)、Painter和Windows系统自带的画图工具等,Adobe Illustrator则是矢量图软件

像素点如何出现在屏幕上

  • 先来看一张全部流程图:

pixels-software-stack

  • 这张图从从右到左就是软件到硬件,从App到硬件屏幕上出现界面的全过程
  • 这里再介绍下前面没介绍的模块

渲染参与者

  • GPU Driver:GPU驱动软件,直接和 GPU 交流的代码块
  • OpenGL:提供了 2D 和 3D 图形渲染的 API,高GPU的能力,并实现硬件加速渲染,是第一个和图形硬件(GPU)交流的标准化方式
  • Core Graphics:Quartz 2D的一个高级绘图引擎,常用与iOS,tvOS,macOS的图形绘制应用开发。Core Graphics是对底层C语言的一个简单封装,其中提供大量的低层次,轻量级的2D渲染API。前缀为CG,比如常见的CGPath,CGColor
  • Core Animation:是苹果提供的一套基于绘图的动画框架,但不止是动画,他同样是绘图的根本【因为其前缀是CA,CALayer有多重要就不用多说了吧】

6379271-f8367726caa19e8a

  • 从图中可以看出,最底层是图形硬件(GPU);上层是OpenGL和CoreGraphics,提供一些接口来访问GPU;再上层的CoreAnimation在此基础上封装了一套动画的API。最上面的UIKit属于应用层,处理与用户的交互
  • Core Image:iOS处理图像的框架,主要用处可以给图片添加滤镜效果和图像识别功能

we are A!R!G!B!

  • 这里讲下对于像素需要知道的知识:
  • 屏幕上的像素是由红,绿,蓝三种颜色组件构成的。因此,位图数据有时也被叫做 RGB 数据
  • ARGB:32bits-per-pixel(bpp), 8bits-per-componet(bpc),透明度会首先被乘以到像素值上【也就是说对于透明度的处理我们直接就是百分比乘到RGB值里面】
  A   R   G   B   A   R   G   B   A   R   G   B  
| pixel 0       | pixel 1       | pixel 2   
  0   1   2 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值