admin管理员组

文章数量:1531469

2024年6月9日发(作者:)

刷新率那点事:为什么只能是30和60?

“30 vs 60”靠什么锁定?速度的极限?

一般我们看到某某某超级大作的主机版信息都会看到这样一句话,“该游戏运行在

900p分辨率30fps”或是“1080p60fps”。这几个数字对各位来说应该都已经不陌生了吧。

不过我被人问过一个问题:“为什么不是30就是60?不能是别的数字吗?”

“30 vs 60”

这个问题还得从“刷新率”这个词说起。简单的说(用最科学的方式来解释的话……

大概不会有人想看吧!),刷新率就是显示设备每秒更新画面数量的上限,在显像管(CRT)

时代,刷新率指的是阴极射线枪的电子束在垂直方向上扫描呈现画面的速度,而对液晶显

示器(LCD)来说指的是面板更新画面的频率,前者根据显像管等级不同、分辨率不同在

设备之间存在区别,而对目前的液晶显示器而言,最流行的标准数字是60Hz。就是说,

你我现在正在面对的这台显示器十有八九是一台60Hz的设备,它所能支持的帧数上限也

就是60fps:每秒更新60次画面。

有了这个前提,回答开篇的问题就简单的多了:要保证画面的视觉流畅以及操控的响

应一致,帧数只能是刷新率(60Hz)的倍数。大于60的帧数没有意义,又不能小于24

这个动态画面的下限,那么只剩下了30与60这两个数。在30和60fps下,每一帧将在

屏幕上分别存在33.33毫秒和16.67毫秒,然后被下一帧替换,每一帧的存在时间对等,

玩家的操作响应延迟也会一直是一致的,视觉和操作上都不会有迟滞感,完美。

那为什么不能是别的数字?很好,我们假设你把游戏的帧数设定在了45fps的上限,

那么在同样的一秒网格图上,每一帧的显示存在时间就变成了这样:

为了简化表达,图中我们假设有15帧显示了33.33毫秒,而剩下的45帧则显示了

16.67毫秒,实际情况比这要复杂得多。而每一帧的平均存在时间?早不知道飘到哪里去

了。这样不平均的帧同步时间带来的就是明显的12Cr1MoVG合金管

卡顿感和操作的响应时间变化。为了避免这样的现象发生,现代游戏的帧数上限要么是

30fps,要么是60fps,少数帧数不固定的游戏也大多提供了锁定到30fps的选项,典型的

例子有能达到约40fps的《声名狼藉:次子》,不锁定60fps的《最后生还者》,Xbox 360

版《泰坦天降》以及《杀戮地带:暗影坠落》的单人战役。

在实际的引擎渲染中,帧数显示稳定但画面迟滞操作延迟的现象也不少见,这就是所

谓的“帧生成速率”(frame pacing)问题。虽然引擎可以做到每秒输出30或60帧画面,

但渲染管线中生成速率的不固定导致每帧之间的速率间隔不是固定的33.33/16.67毫秒,

最典型的例子就是From Software的“魂”系列游戏,《血源诅咒》的frame pacing问

题就一直没有得到修复。

▲《血源诅咒》中帧生成速率的波动非常常见

靠什么锁定?

从机制上说,游戏锁定帧数采用的都是同一种方式:垂直同步。顾名思义,它将游戏

引擎输出画面的速率与显示设备的(垂直方向)刷新率同步,这其中又有两种更深层次的

机制:双重缓冲与三重缓冲。

所谓“缓冲”(Buffer),指的是设备(主机/PC)输出的要显示在屏幕上的画面原始数

本文标签: 画面速率游戏显示操作