从大块头的CRT(Cathode-ray tube)到轻薄小巧的LCD(Liquid-crystal display),甚至最新的OLED,人类对于电子显示技术的探索与革新让广大消费者的观看体验在近几十年里有了长足的进步。电子游戏作为高度依赖显示技术的娱乐方式,这些技术的变革与升级对其自身的发展有着巨大的影响。虽然从工作原理到制作材料,CRT、LCD以及OLED都大相径庭,但它们生成图像都需要对屏幕内容不断的刷新(Refresh)。大部分显示设备的刷新率(Refresh Rate)是一个固定的值,这对于很多应用场景来说不是一个问题,比如看电影,办公等,但是电子游戏则不同。
电子游戏图像的生成十分复杂,游戏主程序对场景需要哪些贴图、模型进行计算,从存储器中调用,最后由显示单元进行运算输出到显示设备,整个流程可以用下图来表示:
在游戏画面生成完毕并输出到显示设备时,游戏画面的显示可能和显示设备的刷新过程产生冲突,导致显示画面出现问题,一般常见的问题分为两种:
画面撕裂(Tearing)
画面卡顿(Stuttering)
这两种画面问题出现的原因比较类似,我们先从画面撕裂(Tearing)开始。
当我们屏幕上正在显示的那一帧画面还没完全消失的时候,新一帧画面就被输出到了显示设备上,于是我们将会看到两帧不同的画面同时出现在屏幕上,这种情况就是画面撕裂。
出现这种情况的原因为:生成游戏画面的过程中,某些环节的性能会成为瓶颈(可能是游戏程序架构设计问题,也有可能是硬件性能不足),造成帧率生成时间(Frame Time,帧率时间指的是显卡生成一帧画面所需要的时间)变长,当显示单元渲染完毕向外输出的时间节点,卡在了显示设备的刷新周期中间。目前市面上超过90%都是采用LCD技术的显示设备,它们的刷新率基本都是固定的,而游戏画面生成的时间不固定,总会有与显示设备刷新率打架的时候。