Android VSYNC

更多关于Android渲染性能请点击这里

刷新频率和帧频

理解VSYNC先要理解其他两个术语

  • 刷新频率:每秒内屏幕更新显示的次数以赫兹(Hz)表示,取决于硬件
  • 帧频:指GPU每秒可以绘制的帧数,例如:30帧每秒,60帧每秒

刷新频率和帧频同时工作从而在屏幕上显示图像,GPU获取数据并进行绘制,然后硬件会将其输出到屏幕上

图像撕裂

但问题来自于刷新频率和帧频不一定会以同样的频率出现,当帧率比刷新频率快时会出现一些视觉问题。

当你照相时拍了一张照片,旋转10度又拍了一张照片,这两张照片非常相似

现在将第二张图片剪开拼接在第一张上,衔接处会有明显的不同,这就是图像撕裂。

当刷新频率与帧率不同时,就会出现这种现象

图像卡在绘制某一帧时使用了内存的一部分,每一个新的帧都会覆盖上一层的帧,从顶端开释,每次输出一行数据。当屏幕刷新时,他不知道缓冲是从什么时候开始的,他从GPU中获取一帧,此时这一帧可能是未完成的帧

双缓存技术

这个问题的解决方案是双缓冲技术,实际上当GPU将一帧绘制到内存,也叫后台缓冲,它会将其复制到内存副区域,也叫帧缓存区。

当他绘制第二帧时,他会完成后台缓冲,帧缓存区不受影响,当屏幕刷新时,他会从并不处于绘制过程中的帧缓存区进行刷新,这就要用到VSYNC(垂直同步)

垂直同步

VSYNC 避免了在屏幕刷新时,把数据从后台缓冲区复制到帧缓冲区

帧率高于刷新频率是理想的,因为GPU刷新速度高于屏幕读取速度,这种情况下,当屏幕成功刷新后,GPU会垂直同步,等待下一次的屏幕刷新,这种情况下帧频会根据设备刷新频率进行捕捉

但是如果屏幕刷新速度比你GPU绘制速度快,每次刷新都会按照同一帧进行。或者说屏幕会显示两次同样的GPU帧

如果帧率高于刷新频率,但是突然下降了,用户就会看见流畅的动画突然出现了卡顿,然后剩余部分还是很流畅,通常称做闪避、打结、延迟或卡顿

我们的应用应该尽量避免突然地恶化,帧率要一直保证GPU能够迅速获取他要的数据,并且有时间在下一次屏幕刷新前进行绘制。

理解VSYNC仅仅是开始,打造高性能的Android应用提供极致的渲染性能请点击这里

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值