游戏FPS是越高越好吗

导语

以往手机的刷新率都是60Hz,随着硬件设备性能的提升,出现了各种更高的刷新率,移动端也能有120Hz的显示设备。那么手机上的游戏就真的是FPS越高越好吗?我们来探索下背后的原理。

背景

作为游戏开发者,我们的目标总是要降低逻辑的频率从而减轻CPU负担,降低游戏画面质量从而减少GPU负担。
核心目标就是让不同性能设备的玩家都可以流畅的玩游戏,就是我们所说的游戏玩起来不卡顿。
流畅的最终标准就是我们目前需要谈的话题FPS(帧率)
现在的问题是如何我们一味的提高帧率,是不是我们推出去之后玩家的实际体验就会更加流畅呢???
当然市面上评测硬件性能都是对比不同硬件下相同画质游戏的FPS,且越高越好

帧率(FrameRate)
帧率是GPU与CPU互相协作产生的图像的数量
计量单位是帧/秒,通常是评估硬件性能与游戏体验流畅度的指标

刷新率(RefreshRate)
刷新率(垂直刷新率、垂直扫描率)表示显示设备一秒内可显示的新图像的数量
计量单位是赫兹(Hz)
刷新率与帧率是两个独立的概念
帧率表示驱动显示器的设备每秒可产生新图像的数量

那么比较明显刷新率其实就是显示器这个设备本身刷新的速度
所以如果我们的帧率高于刷新率的时候,其实我们是被刷新率托后腿的。因为就算游戏app准备好了一帧新的画面,显示器并没有马上去读取这一帧画面的话,玩家看到的其实还是上一帧的画面,并没有直接体现出来。

画面撕裂
假设你的显示设备刷新率为60Hz
当帧率高过刷新率 或
游戏运行时的帧时间不是1/60的倍数(2/60、3/60)
即其FPS不是:…/120/60/30/20/… 时
就会存在显示器正在刷新图像时,新的数据由显卡传过来的情况
就会出现屏幕中有多帧数据的情况
B帧渲染较快,在A帧的数据仍在显示器中刷新时,提交了新数据造成画面撕裂
这种现象就叫做画面撕裂,这种瑕疵最简单的解决方案是垂直同步(VSync)

垂直同步

垂直同步会同步显卡与显示设备的工作
当显示器在刷新数据时,会让GPU等待
直到完全刷新数据后,让GPU提交新的数据,并在下一个刷新周期刷新

垂直同步会将游戏的FPS限制为显示设备的刷新率
其最大的问题是会导致玩家输入延迟
因为它会要求显卡在渲染完毕后等待显示设备去刷新数据

垂直同步的缺陷如何解决
使显示器调整其刷新率以匹配显卡的帧率
其缺点是需要硬件(显示设备硬件)支持

Android
移动平台一般都是60hz
那么面对我们游戏的高帧率,是如何解决画面撕裂的问题呢?

当显示器正在刷新数据时,新的数据被Push到显示设备时的情况
其通过以下措施避免撕裂(Tearing):

将历史帧数据缓存住
自动检测有延迟的帧数据提交
当提交有延迟时,重复渲染历史帧数据
通过这个逻辑就不会有VSYNC的阻塞式等待的问题,不增大影响游戏逻辑的输入延迟
虽然带来了一定的画面延迟,但可以避免画面撕裂问题

短帧卡顿

当某帧的渲染时间变小,会出现卡顿现象(Stuttering)
简单解释下原理,就是因为你渲染速度太快,导致后面很多帧由于显示器读取的速度过慢,导致实际因为采用了历史帧画面,导致明明是短暂的画面,结果显示的实际时间给拉长了,反而让玩家觉得比较怪异,表现出来就是卡顿。

长帧卡顿/延迟

比如当前这一次渲染一次画面的实际时间是帧率的2倍多一部分,也就是显示器需要等待第三帧才能看到新的画面,第二次渲染需要3帧多一点的时间的话,那么就会发现后续2帧还是使用的第一次渲染的画面,需要等待第二次渲染完成并且等会下次读取才能看到新的画面,这个就是所谓的卡顿。上面带来的一个不好的问题就是明明第二次渲染的画面需要显示更长的,然后实际显示更短了,第一次渲染的显示停留时间应该更短,反而让玩家更长时间的感受。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你一身傲骨怎能输

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值