渲染基础知识屏幕绘制的原始数据源位图计算机或手机的渲染是一个非常复杂的过程,本文介绍了渲染相关的一些基础知识,并结合 iOS 和安卓的技术框架介绍了移动端渲染原理,最后详细的解析了 iOS 中的离屏渲染以及圆角优化的一些方法。
我们在屏幕上绘制图像需要的原始数据叫做位图。位图(Bitmap) 是一种数据结构。一个位图是由 n*m 个像素组成,每个像素的颜色信息由 RGB 组合或者灰度值表示。根据位深度,可将位图分为 1、4、8、16、24 及 32 位图像等。每个像素使用的信息位数越多,可用的颜色就越多,颜色表现就越逼真,越丰富,相应的数据量越大。
物理像素和逻辑像素位图一般存储的是物理像素,而应用层一般用的是逻辑像素,物理像素和逻辑像素之间会存在一定的对应关系。例如,iOS 中物理像素和逻辑像素的对应关系如下:
- iOS1 倍屏 1pt 对应 1 个物理像素
- iOS2 倍屏 1pt 对应 2 个物理像素
- iOS3 倍屏 1pt 对应 3 个物理像素
上边讲了屏幕上绘制图像需要的原始数据叫做位图。那么问题来了,有了位图数据之后如何将图像绘制到屏幕上呢?如下图所示:电子枪从上到下逐行扫描,扫描完成后显示器就呈现一帧画面。然后电子枪回到屏幕初始位置进行下一次扫描。为了同步显示器的显示过程和视频控制器的扫描过程,显示器会用硬件时钟产生一系列的定时信号。当电子枪换行进行扫描时,显示器会发出一个水平同步信号;当一帧画面绘制完成后,电子枪回到原位,准备画下一帧前,显示器会发出一个垂直同步信号。显示器通常以固定的频率进行刷新,这个刷新率就是垂直同步信号产生的频率。