Android性能优化系列——VSYNC

本文深入探讨了VSYNC、帧率和刷新率之间的关系,解释了GPU绘制、屏幕刷新过程及如何通过双缓冲技术优化显示效果,确保流畅的游戏体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概念

  1. VSYNC,vertical synchronization
  2. Refresh Rate 屏幕一秒钟刷新的次数,由硬件决定,单位Hz,一般是60Hz
  3. Frame Rate GPU在一秒内绘制的帧数,单位fps(Frames per second)

具体解释

GPU获取图形数据进行绘制,硬件将绘制好的数据呈现在屏幕上,为了使画面在屏幕上流畅的显示,需要保持Frame Rate 在60以上,也就是一次draw操作的时间不超过16.7ms。
Frame Rate与Refrash Rate不会总保持一致,如果GPU绘制速度大于屏幕刷新速度,就会出现截断现象,这是因为GPU使用一块内存绘制帧数据,新的图像帧会从上到下一行一行覆盖旧图像帧,当屏幕刷新时并不知道缓冲区现在的数据状态,这样就抓取了GPU中还没有绘制完的一帧数据。

解决方法是双缓冲技术(double buffering),GPU首先将帧数据写到back buffer中,然后把它拷贝到另一块区域frame buffer。当绘制下一帧时,数据先写到back buffer,屏幕刷新时,只从frame buffer中获取。如果GPU正在写back buffer,这时候来了刷新屏幕,VSYNC就会阻止这个拷贝过程。

VSYNC or vertical synchronization,will basically keep this copy operation from back buffer to frame buffer from happening if the screen is in the middle of refreshing from it.

当GPU的绘制速度小于屏幕刷新速度,也就是FrameRate < RefreshRate,就会在屏幕上看到卡顿现象。所以要尽量保证一帧的绘制时间小于16ms。

Reference

Android Performance Patterns: Understanding VSYNC

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值