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 还觉得“不够跟手”。

从工程角度看,座舱场景有几个关键阈值:

  1. 24-30 FPS:静态信息显示(如仪表盘数字)可接受。
  2. 45-60 FPS:动态交互(地图拖动、菜单滑动)的及格线。
  3. 90-120 FPS:AR 导航、HUD 叠加、VR 场景的舒适区。

我记得有一次做 HUD 项目,测试团队反馈“画面有闪烁感”。我们测了帧率,稳定在 55 FPS,按理说没问题。后来发现是帧生成时间的抖动频率刚好落在人眼最敏感的 8-12Hz 范围内。说白了,不是帧率不够,是抖动节奏踩到了雷区。

核心结论:人眼感知的不是平均 FPS,而是帧生成时间的 稳定性。稳定的 45 FPS 比抖动的 60 FPS 体验更好。

1.5 知识体系总览

下面这张图把今天讲的核心概念串起来,方便你建立整体认知。

帧率基础概念知识体系 帧率性能 FPS(每秒帧数) 帧生成时间 刷新率 人眼感知 结果指标 反映整体吞吐 易被平均掩盖问题 过程指标 诊断卡顿的核心 关注 P99 分位值 硬件能力 屏幕物理刷新频率 决定消费端上限 主观体验 受运动/亮度影响 稳定性 > 平均值 核心:帧生成时间稳定性 > 平均 FPS 帧率与刷新率匹配 + 消除长帧抖动 = 流畅体验

1.6 本章小结

好了,咱们把基础概念捋了一遍。记住几个关键点:

  • FPS 是面子,帧生成时间 是里子。优化要抓里子。
  • 刷新率 是显示器的硬约束,帧率要匹配它,别盲目堆高。
  • 人眼感知 对帧率抖动极其敏感,稳定的低帧率比抖动的高帧率更友好。