Android显示系统Vsync
来源:互联网 发布:js延迟 onload 编辑:程序博客网 时间:2024/05/08 19:12
Android 显示系统 VSync
FPS
FPS代表frames per second,中文意思是每秒显示帧数,它描绘了当前系统的绘制更新频率。
在系统动画过程中,FPS应该尽可能高,否则动画会很卡;如果系统静止,FPS应该很低,否则说明不必要的绘制太多,应该优化。
CRT显示器必须不断刷新,维持在60Hz到100Hz,否则荧光熄灭,屏幕闪烁。
LCD则不要求不断刷新,因为它的状态不会随着时间而减弱,相反,LCD强调响应时间,比如说8ms之内应该切换到下一个画面,否则如果动画太快的话,画质模糊。
VSync 与 Triple Buffering
VSync代表Vertical Synchronization,中文的意思是垂直同步。它的基本思想是将FPS与显示器的刷新频率通过一个称为VSync的信号同步起来,相当于一个定时中断。
VSync技术的引入主要是为了解决“Tearing”(撕裂)现象,同时它也顺带节约了电能(因为系统不必满负荷运行)。
首先,说明一下“Tearing”(撕裂)现象:假设系统的FPS是100,显示器的刷新频率是75Hz,显卡比显示器快1/3;这意味着,在一个刷新周期之内,显卡将写入4/3的帧数据,也就是说,下一帧的1/3覆盖在前一帧之上;当然,随着系统运行,1/3这个比例会发生变化,1/3,2/3,1,1/3,循环;这种帧与帧之间的不完全覆盖重合现象就是“Tearing”(撕裂)现象。
VSync技术通过一个定期同步信号,同步显卡与显示器,避免显卡过度刷新,从而避免了“Tearing”(撕裂)现象。
VSync一般依赖于“双缓冲”技术,否则,在FPS低于显示器刷新频率的情况下,仍然会有“Tearing”(撕裂)现象,这个不难理解。
但是VSync技术也有缺点,如果FPS低于显示器刷新频率,那么系统的FPS将迅速下降为显示器刷新频率的分数倍上,这会导致FPS下降得很厉害,出现“Stutter”(卡顿)现象,因为复杂系统的FPS不可能一直高于显示器刷新频率。“Stutter”(卡顿)现象是指系统忽快忽慢,卡顿非常明显。
出现这一问题的原因如下:假设显示器的刷新频率是75Hz,FPS为50,显卡比显示器慢1/3;这意味着,在第一个刷新周期之内,显卡只能在后备缓冲区中绘制第一帧的前2/3,在第二个刷新周期内,显卡接着绘制第一帧的后1/3,剩余时间空闲(因为后备缓冲区已满);这样看来,两个刷新周期才能看到一个完整的帧,FPS下降为37.5。
Triple Buffering(三重缓冲)可以缓解这一问题:假设显示器的刷新频率是75Hz,FPS为50,显卡比显示器慢1/3;这意味着,在第一个刷新周期之内,显卡只能在后备缓冲区中绘制第一帧的前2/3,在第二个刷新周期内,显卡接着绘制第一帧的后1/3,然后绘制第二帧的前2/3,在第三个刷新周期之内,显卡先绘制第二帧的后1/3,然后绘制第三帧的前2/3;这样看来,三个刷新周期可以看到两个完整的帧,FPS仍然为50。
如果打算对显卡进行基准测试,应该关闭VSync技术,否则会拉低显卡的实际频率。
FPS
FPS代表frames per second,中文意思是每秒显示帧数,它描绘了当前系统的绘制更新频率。
在系统动画过程中,FPS应该尽可能高,否则动画会很卡;如果系统静止,FPS应该很低,否则说明不必要的绘制太多,应该优化。
CRT显示器必须不断刷新,维持在60Hz到100Hz,否则荧光熄灭,屏幕闪烁。
LCD则不要求不断刷新,因为它的状态不会随着时间而减弱,相反,LCD强调响应时间,比如说8ms之内应该切换到下一个画面,否则如果动画太快的话,画质模糊。
VSync 与 Triple Buffering
VSync代表Vertical Synchronization,中文的意思是垂直同步。它的基本思想是将FPS与显示器的刷新频率通过一个称为VSync的信号同步起来,相当于一个定时中断。
VSync技术的引入主要是为了解决“Tearing”(撕裂)现象,同时它也顺带节约了电能(因为系统不必满负荷运行)。
首先,说明一下“Tearing”(撕裂)现象:假设系统的FPS是100,显示器的刷新频率是75Hz,显卡比显示器快1/3;这意味着,在一个刷新周期之内,显卡将写入4/3的帧数据,也就是说,下一帧的1/3覆盖在前一帧之上;当然,随着系统运行,1/3这个比例会发生变化,1/3,2/3,1,1/3,循环;这种帧与帧之间的不完全覆盖重合现象就是“Tearing”(撕裂)现象。
VSync技术通过一个定期同步信号,同步显卡与显示器,避免显卡过度刷新,从而避免了“Tearing”(撕裂)现象。
VSync一般依赖于“双缓冲”技术,否则,在FPS低于显示器刷新频率的情况下,仍然会有“Tearing”(撕裂)现象,这个不难理解。
但是VSync技术也有缺点,如果FPS低于显示器刷新频率,那么系统的FPS将迅速下降为显示器刷新频率的分数倍上,这会导致FPS下降得很厉害,出现“Stutter”(卡顿)现象,因为复杂系统的FPS不可能一直高于显示器刷新频率。“Stutter”(卡顿)现象是指系统忽快忽慢,卡顿非常明显。
出现这一问题的原因如下:假设显示器的刷新频率是75Hz,FPS为50,显卡比显示器慢1/3;这意味着,在第一个刷新周期之内,显卡只能在后备缓冲区中绘制第一帧的前2/3,在第二个刷新周期内,显卡接着绘制第一帧的后1/3,剩余时间空闲(因为后备缓冲区已满);这样看来,两个刷新周期才能看到一个完整的帧,FPS下降为37.5。
Triple Buffering(三重缓冲)可以缓解这一问题:假设显示器的刷新频率是75Hz,FPS为50,显卡比显示器慢1/3;这意味着,在第一个刷新周期之内,显卡只能在后备缓冲区中绘制第一帧的前2/3,在第二个刷新周期内,显卡接着绘制第一帧的后1/3,然后绘制第二帧的前2/3,在第三个刷新周期之内,显卡先绘制第二帧的后1/3,然后绘制第三帧的前2/3;这样看来,三个刷新周期可以看到两个完整的帧,FPS仍然为50。
如果打算对显卡进行基准测试,应该关闭VSync技术,否则会拉低显卡的实际频率。
0 0
- Android显示系统Vsync
- Android显示系统中VSYNC简介
- Android显示系统中VSYNC简介
- android vsync
- 显示 VSync信号
- Android 4.4 Graphic系统详解(2) VSYNC的生成
- Android 4.4 Graphic系统详解(3) VSYNC的处理
- Android 4.4 Graphic系统详解(2) VSYNC的生成
- Android 4.4 Graphic系统详解(2) VSYNC的生成
- Android 4.4 Graphic系统详解(2) VSYNC的生成
- Android 4.4 Graphic系统详解(2) VSYNC的生成
- Android 4.4 Graphic系统详解(2) VSYNC的生成
- Android 4.4 Graphic系统详解(2) VSYNC的生成
- Android 4.4 Graphic系统详解(2) VSYNC的生成
- Android 4.4 Graphic系统详解(2) VSYNC的生成
- Android 4.4 Graphic系统详解(2) VSYNC的生成
- Android 7.1 GUI系统-vsync信号的处理(六)
- Android VSYNC详解
- JDBC 连接数据库 事物处理
- 经纬财富:荆门现货白银手续费最低
- 纯PHP脚本文件不建议加结束标记?>
- 2014-5-30任务完成情况
- Linux kernel多线程的几种实现
- Android显示系统Vsync
- 语言程序
- Android中运行的错误:java.lang.UnsatisfiedLinkError: Couldn't load locSDK3: findLibrary returned null.
- 从异常堆栈中还原 ProGuard 混淆过的代码
- 安装graphviz
- 毕设进程:公交换乘算法
- Scala很难
- 【大话设计模式】——装饰模式
- 安装Python