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>
- FPS, VSync, Triple Buffering
- What are Double Buffering, vsync and Triple Buffering?
- Triple Buffering
- triple
- Triple
- Windows编程 32位色彩正式教学 在Direct中使用双缓冲、三缓冲(Triple Buffering)
- FPS
- FPS
- FPS
- FPS
- FPS
- fps
- FPS
- FPS
- Double Buffering
- Z-buffering
- 什么是VSync
- android vsync
- 杭电HDOJ 1001 解题报告
- 谈谈对RAC的认识
- 30条值得你借鉴的好习惯
- 重读C++ Primer,记录一些之前不易觉察的知识点(12. 类)
- android优秀开源项目
- FPS, VSync, Triple Buffering
- 90后准程序员写给前辈们的一封信
- linux中select()函数分析
- JavaScript宝座:七大框架论剑
- 使用ajax协议测试ajax
- Linux线程介绍
- 11个新鲜出炉的jquery滑块插件
- Android中HorizontalScrollView的使用
- EditPlus v3.3 系列注册码