美文网首页
帧率和刷新率 VSync

帧率和刷新率 VSync

作者: xiaoluo | 来源:发表于2022-05-30 16:44 被阅读0次

帧率和刷新率

帧率是衡量单个图像(称为帧)在屏幕上显示速度的指标。所有视频实际上都是快速显示的一系列图片。当人眼看到这些图像快速变化时,它会将其解释为运动。 帧速率通常以 FPS 或每秒帧数表示。显然,帧率越高,每秒出现在屏幕上的图像就越多。更多的帧意味着更多的细节,所以在更高的帧速率下运动看起来更流畅。

刷新率是指屏幕更新其显示图像的次数。在 CRT(阴极射线管)显示器的旧时代,这是显示器内的电子枪在屏幕上绘制新图像的次数。低刷新率会导致恼人的闪烁,即当您的眼睛注意到帧之间的亮度变化时。刷新率通常以赫兹 (Hz) 表示。您今天可以买到的几乎所有显示器的刷新率都至少为 60Hz。不过,可以使用更高刷新率的显示器,并且通常用于游戏。

帧率和刷新率的区别:帧速率是计算机、视频游戏控制台、视频播放器或其他设备每秒发送到显示器的图像数量。同时,刷新率是显示器实际显示这些帧的速度。

帧率 > 刷新率

从逻辑上讲,这意味着 GPU 生成帧的速率高于显示硬件可以消耗的速率。当显视器在屏幕上显示任何内容时,它会从称为帧缓冲区的内存区域读取帧。当显示硬件尚未完成绘制一帧并且 GPU 用其他即将到来的帧覆盖帧缓冲区时,我们会在屏幕上看到第一帧的一部分和第二帧的一部分。这称为屏幕撕裂。


帧率 > 刷新率 帧率 > 刷新率

帧率 < 刷新率

通常,不会发现这种情况发生。但假设这种情况发生了,屏幕将在多次刷新后显示相同的帧。从视觉的角度来看,用户不会看到任何差异。

解决办法

VSync 使用称为双缓冲的机制解决了这个问题。它是一种将帧率与显示硬件的刷新率同步的机制。它规定在当前刷新周期完成之前,GPU 不会将任何新帧复制到帧缓冲区。

Vsync

GPU 使用一个缓冲区来写入新帧。它称为后缓冲区,以前使用的帧缓冲区现在称为前缓冲区。所以规则是: “仅当显示硬件的当前刷新周期完成时,帧才会从后缓冲区移动到前缓冲区。”确保看到流畅的 UI。

在 Jelly Bean 4.1 的 android 中引入了垂直同步,在引入 Vsync 之前,输入、动画和绘图没有同步发生。当输入出现时,它被处理,当有动画或视图发生变化时,然后处理它,这导致过多的 CPU 操作,当有一些动画正在进行时,很难处理输入事件。

VSync 是 android Linux 内核以固定间隔定期发布的事件,其中输入处理、动画和窗口绘制以标准顺序同步发生。举个例子,VSync 信号以 16.66 ms 的间隔传送,相当于 60fps。输入处理、动画和窗口绘制在此信号到达时发生。如果输入事件在 VSync 信号之前到达,它们将被排队 ,在动画完成, UI 重绘完成后在处理它。

Choreographer

Choreographer只是一个抽象,从较低的子系统接收定时脉冲(Vsync)并将命令传递给较高的子系统以渲染即将到来的帧。 每个具有 looper 的线程都会有一个单独的 Choreographer 实例。每个 HandlerThread 实例也会有它自己的 Choreographer。

Choreographer 类有一个回调 onVsync() 来处理 Vsync 信号。

参考
https://www.youtube.com/watch?v=T5WkZcMebfA
https://medium.com/@kiitvishal89/vsyncs-or-vertical-sync-never-heard-of-it-or-did-you-edc055a0decd
https://developer.android.com/reference/android/view/Choreographer
https://www.youtube.com/watch?v=zdQRIYOST64

相关文章

  • 帧率和刷新率 VSync

    帧率和刷新率 帧率是衡量单个图像(称为帧)在屏幕上显示速度的指标。所有视频实际上都是快速显示的一系列图片。当人眼看...

  • Android 绘制与 16ms 不得不说的故事

    刷新率、帧率 刷新率:每秒屏幕刷新次数。帧率:GPU 在一秒内绘制的帧数。虽然现在有的厂商推出了高刷新率的手机,但...

  • ui卡顿总结

    卡顿原因: 是屏幕刷新率和图像绘制帧率不一致导致的。屏幕刷新率是手机硬件决定的一般每秒60次,所以我们的图像就要1...

  • 显示框架之Choreographer

    Android为了提供一个稳定的帧率输出机制,让软件层和硬件层可以以共同的频率一起工作,引入了 Vsync + T...

  • Android卡顿

     Android设备刷新率一般为60Hz,因为Android系统每16ms发出VSYNC信号,触发UI渲染,如果这...

  • 显卡的帧率(FPS)、显示器刷新率和垂直同步的关系

    提到显卡的帧率(FPS)、显示器刷新率和垂直同步的关系,第一印象是这些概念之间似乎没有直接的关系,实则不然。 首先...

  • 性能优化

    性能优化 卡顿原因的产生:按照60FPS的刷帧率,每隔16ms就会有一次VSync信号,当信号到达时CPU与GPU...

  • Android 显示刷新机制、VSYNC和三重缓存机制

    和你一起终身学习,这里是程序员 Android 经典好文推荐,通过阅读本文,您将收获以下知识点: 一、刷新率与帧率...

  • 屏幕刷新机制和三种布局复用标签

    屏幕UI刷新机制 刷新率:屏幕16ms刷新一次,如果超过16ms刷新一次,人们就会感觉卡顿。60HZ 帧率:指GP...

  • Android性能优化系列--VSYNC

    Android性能优化系列--VSYNC 转载:Android性能优化系列——VSYNC 概念 VSYNC, ve...

网友评论

      本文标题:帧率和刷新率 VSync

      本文链接:https://www.haomeiwen.com/subject/rfpoprtx.html