程序人生 - 游戏帧数很高,为什么还是会卡顿?(一)

简介: 程序人生 - 游戏帧数很高,为什么还是会卡顿?(一)

大家或多或少在生活中会接触到“帧数”。无论在看电影、电视节目也好,玩游戏也好,总会遇到各种的慢镜头、定格或者加速播放等情况,这些其实都与“帧数”息息相关。

那么,到底什么是“帧数”?

其实很简单,我们看到的视频、游戏画面,其实都是由多张静态图片快速连续播放而成的。而在播放的过程中,肉眼会产生“视觉残留”,从而不由自主地把这些图片连在一起,产生“动”的感觉。

我们所说的“帧数”,或者亦可叫做“帧率”,其实就是每秒播放的图片的张数。

比如“9帧”,就是每一秒播放9张图片的意思。


image.png


据研究表明,达到了15帧就足以让人眼产生“动”的感觉,而越高的帧数就会让画面越流畅。

1、电影中的“帧数”

对于早期电影而言,由于当时的拍摄主要依靠手摇式装置,拍摄时难免会造成速度不统一,从而导致影片之间的帧数差异非常大,例如爱迪生偏好用40帧的标准拍摄电影,而卢米埃尔兄弟则是以16帧为标准。

后来发展到有声电影时代,声音也可以被录制到胶片了,但过低的帧数会导致声音失真,甚至出现大量杂音。经过当时的从业人员反复尝试,最后得出结论:如果想要保持声音的清晰度,24帧/秒是最低标准。


image.png


自此之后,“24帧”在100多年来一直是电影行业的拍摄标准。至于为什么是“24”这个数字,而不是更高呢?这其实是当时电影行业之间相互争执之后的结果,标准一旦被沿用,再想要打破就非常困难了。

直到最近,李安导演使用“120帧”的超高帧率拍摄的《双子杀手》上映,引起了广泛的话题,“帧数”标准该不该改变的问题才再一次被重视起来。

 

2、游戏中的“帧数”

相较于电源始终如一的“24帧”黄金标准,电视、电脑游戏的帧率十几年来都是玩家没热议的话题。例如玩家和游戏制作人们一直相互争执不下的“30帧/60帧”的流畅标准。

为什么会有这样的争议呢?

首先,游戏之所以把“流畅帧数”的起点定为30帧,而不是和电影一样的24帧,是因为低于30帧的游戏画面会明显让人感觉到不连贯。

为什么会有这样的差异呢?

这其实就牵扯到“动态模糊”的概念了。不用过于深究这个名词的意思,其实很容易理解。

电影中的每一帧记录的都是一个动态的画面,或者说是一个运动过程,简称“动态帧”:


image.png


对于动态帧而言,观众脑中会自动补全两帧之间的画面,而静态帧由于本身清晰可见,导致观众无法完成脑补,从而觉得卡顿。

换句话说,电影中的每一帧都包含了一段时间内信息,低帧数只会让观众觉得动作慢了;游戏中的每一帧只包含一瞬间的信息,帧数低就会产生卡顿。

因此,“让游戏全程稳定在30帧”直到今天都是游戏行业的硬性标杆。

而之所以是30帧,而不是更高的帧数,原因要两点。首先是当时的显示设备,普遍最高仅能支持到30帧的显示频率;其次则是游戏制作人对游戏画面和游戏帧数之间的一个妥协:由于电脑的性能是一定的,要呈现更好的画面必然要相应的降低帧数。

当然,今后随着技术的进步,同时拥有高画质和高帧率的时代也是必然会来临的。

目录
相关文章
|
4月前
|
缓存 算法 网络性能优化
解决网络延迟和阻塞,有它,不服都不行!
解决网络延迟和阻塞,有它,不服都不行!
|
6月前
|
Web App开发 网络安全 iOS开发
一篇文章讲明白Mac活动监视器闪退pro发热耗电过快问题解决,亲测可用解决
一篇文章讲明白Mac活动监视器闪退pro发热耗电过快问题解决,亲测可用解决
122 2
|
6月前
|
图形学
【unity实战】FPS实现拾取和丢弃枪
【unity实战】FPS实现拾取和丢弃枪
54 0
|
7月前
|
JavaScript
uniapp计算视频学习进程,并且下次回来继续播放(不能快进)
uniapp计算视频学习进程,并且下次回来继续播放(不能快进)
229 0
|
移动开发 小程序 JavaScript
小程序图片左右摆动效果
小程序图片左右摆动效果
117 0
|
Go 调度
动图图解!怎么让goroutine跑一半就退出?
动图图解!怎么让goroutine跑一半就退出?
127 0
|
机器学习/深度学习 存储 人工智能
用视频插帧开一个流体力学分析的外挂
阿里云提供的线上AI能力在处理视觉信息方面已经有较为成熟和通用的产品,其中视频插帧可以用于现有超高速相机增强,用于粒子测量PIV、BOS背景纹影等领域。本文为视觉流体力学分析预处理中间件的开发思路、技术架构设计和开发实战中参数的设置介绍,对一些数字影像的基础概念和阿里云视觉人工智能的API细节进行了分析。
448 0
用视频插帧开一个流体力学分析的外挂
|
JSON NoSQL Redis
逆转时间,起死回生——程序报错崩溃后,如何倒回到崩溃的位置?
逆转时间,起死回生——程序报错崩溃后,如何倒回到崩溃的位置?
106 0
|
存储 缓存 NoSQL
最后写入胜利(丢弃并发写入)
实现最终收敛的一种方案,每个副本总存储最新值,允许覆盖并抛弃旧值。假定每个写请求都最终同步到所有副本,只要确定哪个写入是最新,则副本就能最终收敛到相同值。
146 0
|
计算机视觉 开发者
程序人生 - 游戏帧数很高,为什么还是会卡顿?(二)
程序人生 - 游戏帧数很高,为什么还是会卡顿?(二)
307 0
程序人生 - 游戏帧数很高,为什么还是会卡顿?(二)