FPS, VSync, Triple Buffering

来源:互联网 发布:笔记本跑分用什么软件 编辑:程序博客网 时间:2024/04/28 05:13

      FPS

      FPS代表frames per second,中文意思是每秒显示帧数,它描绘了当前系统的绘制更新频率,它是一个运行时特征。

      它的值受到多个因素的影响:画面的变化速度,画面的复杂程度,显卡的性能等。

      系统的FPS与画面的变化速度相同是最优的,低于画面的变化速度则会使得画面卡顿,高于画面的变化速度则表明出现了不必要的绘制,浪费系统资源。

      显示器

      CRT显示器必须不断刷新,频率应在60Hz到100Hz之间,否则屏幕上的荧光会渐渐变暗,导致屏幕闪烁。

      LCD显示器无需不断刷新(它的显示原理不要求补给能量就能维持画面的亮度),相反,LCD显示器强调响应时间,一般应在8ms之内完成画面渲染,否则如果画面的变化速度太快,显示效果会很模糊。

      VSync 与 Triple Buffering

      VSync代表Vertical Synchronization,中文的意思是垂直同步。它的基本思想是将显卡与显示器的刷新频率通过一个称为VSync的信号同步起来,当VSync信号起来时,显卡才将绘制好的帧推送给显示器。

      VSync技术的引入主要是为了解决“Tearing”(撕裂)现象。

      首先,说明一下“Tearing”(撕裂)现象:假设系统的FPS是100,显示器的刷新频率是75Hz,显卡将比显示器快1/3;这意味着,在一个刷新周期之内,显卡将写入4/3的帧数据,也就是说,下一帧的1/3覆盖在前一帧之上;当然,随着系统运行,1/3这个比例会发生变化,1/3,2/3,1,1/3,循环;这种帧与帧之间的不完全覆盖重合现象就是“Tearing”(撕裂)现象。

      VSync技术通过一个定期同步信号,同步显卡与显示器,从而避免了“Tearing”(撕裂)现象。

      VSync一般依赖于缓冲技术,否则:在系统的FPS低于显示器刷新频率的情况下,仍然会有“Tearing”(撕裂)现象,这个不难理解;在系统的FPS高于显示器刷新频率的情况下,显卡会将一部分时间浪费在等待上,因为没有可用的内存用于绘制。

      但是VSync技术也有缺点,如果系统的FPS低于显示器刷新频率,那么系统的FPS将迅速下降为显示器刷新频率的分数倍上,严重低于系统潜能,出现“Stutter”现象(指系统忽快忽慢,卡顿非常明显),这是因为复杂系统的FPS不可能一直高于显示器刷新频率,如果它的FPS一旦稍稍低于显示器刷新频率,那么实际的FPS将下降更多,画面会突然卡顿。

      出现这一问题的原因如下:假设显示器的刷新频率是75Hz,系统的FPS为50,显卡将比显示器慢1/3;这意味着,在第一个刷新周期之内,显卡只能在后备缓冲区中绘制第一帧的前2/3,在第二个刷新周期内,显卡接着绘制第一帧的后1/3,剩余时间空闲(因为后备缓冲区已满);这样看来,两个刷新周期才能看到一个完整的帧,系统的实际FPS将下降为37.5。

      Triple Buffering(三重缓冲)可以缓解这一问题:假设显示器的刷新频率是75Hz,系统的FPS为50,显卡比显示器慢1/3;这意味着,在第一个刷新周期之内,显卡只能在后备缓冲区中绘制第一帧的前2/3,在第二个刷新周期内,显卡接着绘制第一帧的后1/3,然后绘制第二帧的前2/3,在第三个刷新周期之内,显卡先绘制第二帧的后1/3,然后绘制第三帧的前2/3;这样看来,三个刷新周期可以看到两个完整的帧,系统的FPS仍然为50。

      如果打算对显卡进行基准测试,应该关闭VSync技术,否则会拉低显卡的实际频率。


<script type="text/javascript"><!--google_ad_client = "ca-pub-1944176156128447";/* cnblogs 首页横幅 */google_ad_slot = "5419468456";google_ad_width = 728;google_ad_height = 90;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
原创粉丝点击