我们在玩一些游戏的时候经常会出现明明帧数很高、画面确莫名其妙卡顿的情况,背后其实是有科学依据的。其原因就在于“帧生成时间”带来的不稳定帧数,这是由电脑软硬件瓶颈造成的;另一方面也可能是由显示器帧刷新原理带来的画面撕裂情况,这可以通过垂直同步或是G-SYNC或Free-SYNC技术解决。
原因一:帧生成时间&不稳定帧数
在显示设备的工作原理中,我们看到的每一帧定格画面都是流畅动画/视频的重要组成部分,帧数越多则画面越流畅。而在游戏中,电脑每秒中渲染出的定格换面(帧)也就成为了衡量游戏是否流畅的一个依据,通常30帧被称为能够运行,而60帧被称为流畅运行。
注意图中“凸出”的那些帧生成时间
在电脑(手机、游戏主机同理)输出画面时候,显卡、内存和CPU担任着绘制画面、缓存数据和处理逻辑信息等等功能。在以60帧输出画面的时候,电脑中的运算组件就需要在1秒(1000毫秒)内均匀、稳定的提供60张画面,平均每一帧的处理时间就被压缩在了16.67毫秒内。xunji190101
而在几个运算组件互相协调工作的过程中,如果有一方在运算中“拖了后腿”,那相对应的那一帧画面就会被延迟输出。而在游戏运行时,只要有一帧被“拖慢延迟输出”,那几乎与此同时渲染处理好的随后几十甚至上百帧也就会被延迟输出。结果当拖了后腿的“那一帧”成功显示后,随后的一些多余渲染出来的帧数也无法被现实、被当做垃圾丢掉,画面就出现了一些卡顿和“跳帧”情况。
但与此同时,多余渲染出、被丢弃的那些帧数依旧是被统计和计算中的“实际渲染有效帧”,也就是我们在屏幕上看到的“高帧数”。正因如此,我们才在游戏显示“高帧率”的时候感觉到了一些莫名其妙的卡顿,这其实就是显示和运算设备中“拖后腿”的一方造成的问题,想排查的话最好还是针对自己的设备、找专业人士比较好。
原因二:画面撕裂问题
显示器输出的画面,是由一帧帧定格的画面组成的,而这些定格的画面,是通过每秒钟无数次“画面刷新”才被“画到”屏幕上面的。而这个画面刷新,是屏幕自上而下、像刷油漆一样的过程,通常普通的显示器每秒钟会有60次的刷新次数,人眼平时是不会发现这些细节和过程的。除非是在激烈变化、运动的画面,特别是游戏中,快速切换的画面会让人们发现这种刷新过程,并在游戏中无限放大它的缺憾——
如果显示器在前一帧画面还没完全显示在屏幕中(想象自上而下刷油漆的画面),下一帧画面就被推到了台前,那显示器中就会同时出现两帧的画面。如果这两帧之间有画面的切换和变动,那就会出现画面撕裂问题。比如上图中,屠夫钩子的错位情况(模拟场景,无法截图)。
这种情况的出现,也会导致画面的卡顿感,让玩家感觉非常不舒服。我们可以通过限制游戏帧率与显示器同步,或是通过垂直同步、G-SYNC或Free-SYNC技术来解决这个问题,它们的原理就是协同电脑硬件和显示器的刷新规则、避免类似的情况出现。