1. 帧率基础概念:FPS、帧生成时间、刷新率与人眼感知
各位好,我是老张。做座舱显示性能优化这些年,我见过太多人一上来就盯着 FPS 数字看,觉得只要跑到 60 就万事大吉。结果呢?用户还是抱怨卡顿、拖影、头晕。
问题出在哪?说白了,就是没搞懂帧率背后那几个核心概念的关系。今天咱们就把这些基础打牢。
1.1 什么是 FPS?
FPS(Frames Per Second),每秒传输帧数。它衡量的是渲染系统在一秒钟内能输出多少张完整的画面。
- 30 FPS:电影级流畅度,静态场景够用,但快速滑动时会有明显顿挫感。
- 60 FPS:目前座舱的主流目标,人眼感觉“顺滑”。
- 90/120 FPS:高端座舱或 AR-HUD 的目标,延迟更低,动态响应更跟手。
关键认知:FPS 是结果,不是原因。它告诉你“有多快”,但不告诉你“为什么慢”。
我个人习惯,拿到一个卡顿问题,第一件事不是看 FPS,而是看帧生成时间曲线。为什么?往下看。
1.2 帧生成时间:真正的性能标尺
帧生成时间(Frame Time),指渲染一帧画面所消耗的时间,单位通常是毫秒(ms)。
举个例子:
- 60 FPS 对应的平均帧生成时间是 16.67ms(1000ms ÷ 60)。
- 30 FPS 对应 33.33ms。
但问题来了——平均帧生成时间 16.67ms 不代表每一帧都是 16.67ms。我在项目中遇到过一种情况:FPS 显示 58,看起来挺正常,但用户操作地图缩放时明显一卡一卡的。抓了帧生成时间曲线才发现,大部分帧在 14ms 左右,但每隔几帧就突然跳到一个 40ms 的“长帧”。
这就是典型的 卡顿(Jank)。平均帧率没掉太多,但用户体验已经崩了。
避坑指南:我曾经只盯着 FPS 做优化,结果被测试团队怼回来三次。后来我学乖了——帧生成时间的 99 分位值(P99)才是衡量流畅度的硬指标。P99 超过 33ms,用户一定能感知到卡顿。
1.3 刷新率与帧率的关系
刷新率(Refresh Rate)是显示器的物理属性,指屏幕每秒刷新画面的次数,单位是 Hz。
帧率是“渲染端能生产多少”,刷新率是“显示端能消费多少”。两者必须配合好。
| 场景 | 帧率 vs 刷新率 | 结果 |
|---|---|---|
| 帧率 < 刷新率 | 渲染跟不上显示 | 画面重复显示同一帧,感觉“慢” |
| 帧率 > 刷新率 | 渲染过剩 | 产生画面撕裂(Tearing),浪费性能 |
| 帧率 = 刷新率 | 完美同步 | 最流畅、无撕裂 |
| 帧率不稳定 | 忽高忽低 | 卡顿、抖动,用户感知最差 |
你想想看,座舱里最常见的屏幕是 60Hz。如果你渲染跑到了 70 FPS,多出来的 10 帧并不会让画面更流畅,反而可能因为垂直同步(V-Sync)机制导致输入延迟增加。
我的建议:在座舱项目中,我通常把目标帧率锁定在屏幕刷新率的整数倍或直接锁定到刷新率。比如 60Hz 屏幕就锁 60 FPS,120Hz 屏幕锁 60 或 120。别让 GPU 做无用功。
1.4 人眼感知极限:到底多少帧才够?
这个问题我经常被问到。网上有人说 24 FPS 就够了,有人说 144 FPS 才能满足。其实都不准确。
人眼对帧率的感知受几个因素影响:
- 运动速度:快速滑动的列表,需要更高帧率才能消除拖影。
- 亮度与对比度:高对比度场景下,人眼对帧率变化更敏感。
- 个体差异:有人对 30 FPS 就满意,有人 60 FPS 还觉得“不够跟手”。
从工程角度看,座舱场景有几个关键阈值:
- 24-30 FPS:静态信息显示(如仪表盘数字)可接受。
- 45-60 FPS:动态交互(地图拖动、菜单滑动)的及格线。
- 90-120 FPS:AR 导航、HUD 叠加、VR 场景的舒适区。
我记得有一次做 HUD 项目,测试团队反馈“画面有闪烁感”。我们测了帧率,稳定在 55 FPS,按理说没问题。后来发现是帧生成时间的抖动频率刚好落在人眼最敏感的 8-12Hz 范围内。说白了,不是帧率不够,是抖动节奏踩到了雷区。
核心结论:人眼感知的不是平均 FPS,而是帧生成时间的 稳定性。稳定的 45 FPS 比抖动的 60 FPS 体验更好。
1.5 知识体系总览
下面这张图把今天讲的核心概念串起来,方便你建立整体认知。
1.6 本章小结
好了,咱们把基础概念捋了一遍。记住几个关键点:
- FPS 是面子,帧生成时间 是里子。优化要抓里子。
- 刷新率 是显示器的硬约束,帧率要匹配它,别盲目堆高。
- 人眼感知 对帧率抖动极其敏感,稳定的低帧率比抖动的高帧率更友好。