Android 屏幕刷新机制 VSync+Choreographer★

1.显示系统基础知识

显示系统一般包括CPU、GPU、Display三部分,其中CPU负责计算帧数据,然后把计算好的数据交给GPU,GPU会对图形数据进行渲染,渲染好后放到图像缓冲区buffet里存起来,然后Display(屏幕或显示器)负责把buffer里的数据呈现到屏幕上。

这里涉及几个基础概念:

①屏幕刷新频率

屏幕刷新频率是指一秒内屏幕刷新的次数,即一秒内显示了多少帧图像,单位是赫兹Hz。常见的屏幕刷新频率是60Hz。

注:刷新频率取决于硬件的固定参数,不会变的。

②逐行扫描

显示器并不是一次性将画面显示到屏幕上,而是从左到右边,从上到下逐行扫描,顺序显示整屏的一个个像素点,这一过程快到人眼无法察觉到变化。

比如常见的刷新率为60 Hz的屏幕,这一过程只需要1000 / 60 ≈ 16ms。

③帧率Frame Rate

帧率指GPU在一秒内绘制操作的帧数,单位fps。Android系统采用60fps,即每秒钟GPU最多绘制60帧画面。

帧率是动态变化的,例如当画面静止时,GPU是没有绘制操作的,屏幕刷新的还是buffer中的数据,即GPU最后操作的帧数据。

④画面撕裂tearing

指一个屏幕内的数据来自2个不同的帧,导致画面出现了撕裂感。

比如屏幕更新到一半的时候用户进程更新了Frame Buffer中的数据,这将导致屏幕上画面的上部分是前一帧的画面,下半部分变成了新的画面,于是就会让用户觉得画面有闪烁感。

猜你喜欢

转载自blog.csdn.net/zenmela2011/article/details/128827129