屏幕显示图像原理

ios_screen_scan.png

首先从过去的CRT显示器原理说起。CRT的电子枪按照上面的方式,从上到下一行行扫描,扫描完成之后显示器上就显示一帧画面,随后电子枪回到初始位置继续下一次扫描。水平扫描时显示器会发出一个水平同步信号(HSync);而当一帧画面绘制完成后,电子枪恢复到原位,准备画下一帧前,显示器会发出一个垂直同步信号(VSync),显示器以固定的频率刷新,这个刷新率就是VSync信号产生的频率。

ios_screen_display.png

通常来说,计算机系统中CPU、GPU、显示器是以上面这种方式协同工作的。
在 VSync 信号到来后,系统图形服务会通过 CADisplayLink 等机制通知 App,App 主线程开始在 CPU 中计算显示内容,比如视图的创建、布局计算、图片解码、文本绘制等。随后 CPU 会将计算好的内容提交到 GPU 去,由 GPU 进行变换、合成、渲染。随后 GPU 会把渲染结果提交到帧缓冲区去,等待下一次 VSync 信号到来时显示到屏幕上。由于垂直同步的机制,如果在一个 VSync 时间内,CPU 或者 GPU 没有完成内容提交,则那一帧就会被丢弃,等待下一次机会再显示,而这时显示屏会保留之前的内容不变。这就是界面卡顿的原因。

你可能感兴趣的:(屏幕显示图像原理)