频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

打开显卡三级缓冲 使游戏运行得更顺畅

来源:IT168.com 作者: 出处:巧巧读书 2006-08-18 进入讨论组

  作者:精工   

  你是否曾经试过,有时为了解决画面撕裂现象,而打开垂直同步(v-sync)之后,不但问题没有解决,反而帧速降低了。打开垂直同步(v-sync),可以把帧速限制在屏幕刷新率以下——对于通常的液晶显示器来说,也就是每秒60帧。玩游戏有60fps的帧速不错了,而且它能够使游戏显得更加顺畅。然而,有时会发现帧速一旦低于60fps的时候,就会被限定在30fps。这时你或许会忍不住嚎叫“拷!画面撕裂真TM难看,垂直同步也不见得好到哪里去!!!”。这并非全是垂直同步的错,通常是图像渲染同时 使用双重缓冲(double buffering)和垂直同步所导致的。

  为什么双重缓冲会导致如此恶果呢?显卡硬件基本上都有两个缓冲区,显示器上见到的图像在前缓冲区,接下来将要显示的一个图像在后缓冲区中。当我们打开垂直同步的时候,在显卡替换前后缓冲区的数据之前,需要等候下一个垂直空白周期(以60Hz刷新率的显示器为例,每一个1/60秒发生一次)以维持画面与显示器的刷新率同步。当显卡的渲染速度高于60fps的时候,不会有什么问题。如果理解这其中的道理,就不难想像,当显卡达不到60帧每秒时会发生什么事了。在那种情形下,由于后缓冲区里的下一帧还没有准备好,显卡要等到下一个垂直空白周期才能进行缓冲区数据交换。结果就是,本来应该每秒60次缓的冲交换,变成了每秒30次,这就是帧速被限制在30fps的原因。 

  这时就需要使用三级缓冲。有了三级缓冲,就有3个缓冲区,显卡无需等待前缓冲区清空进而腾出后缓冲区,随时可以把渲染结果放入第3个缓冲区。这就是说,可以在打开垂直同步的同时保持应有的帧速了。ATi和nVidia的驱动中都有打开三级缓冲(triple buffering)的选项。可惜这只能起到一半的作用,因为驱动中的3级缓冲选项只对OpenGL游戏起作用。加上OpenGL游戏远少于D3D游戏,所以事实上驱动的3倍缓冲选项在超过一半情况都不起作用。

如何才能打开D3D游戏的3级缓冲?

  解决办法就是:使用DirectX Tweaker(http://www.nonatainment.de/web/DirectXTweaker/Download/tabid/58/Default.aspx)。有了这个工具,就可以通过DirectX API强制使用三级缓冲。它的用户界面非常友好,安装也很简单:下载后解压缩就可以用了——只要你的电脑能上网就可以下载使用:)运行DXTweaker,会见到如下界面:

打开显卡三级缓冲 使游戏运行得更顺畅(图一)

使用DirectX Tweaker

  键入一个项目名,选择游戏的运行目录,注意要勾选“Active”选项。一切准备就绪,点击“Modules to load(模组载入)”,将会见到如下界面:

打开显卡三级缓冲 使游戏运行得更顺畅(图二)

设置

  找到“Present Changer”那一行,打勾。然后在“Count”方格中填数字“2”。就这么简单,接下来点击上面的“Project”,按下“Start”按钮,就可以开始游戏了。

  为了给大家看看三级缓冲对帧速的实际影响,特此为大家进行了F.E.A.R.测试。图片胜于雄辩:

打开显卡三级缓冲 使游戏运行得更顺畅(图三)

三级缓冲关

打开显卡三级缓冲 使游戏运行得更顺畅(图四)

三级缓冲开

测试平台
分辨率:1280x 1024
显卡设置:所有设置开到最高,SoftShadow设为disabled。
AA/AF:0xAA/8xAF
 
  注意由于打开了垂直同步,最大帧速是不变的,测试中40fps以上的机会比原来翻了一倍。这表示三级缓冲确实有助于提高游戏的流畅性,大大减少停顿现象。

显存占用率与三级缓冲

  看来,三级缓冲就是低帧速的完美解决办法,不过,这并不是免费的午餐。打开三级缓冲也意味着需要多50%的缓存空间。在某此条件之下,它也可能会对游戏效果产生负面影响。举个简单的例子来说明这个潜在的问题:譬如当我们在1600x1200分辨率下运行游戏的时候,每个像素需要32bit空间储存信息,1600x1200x32=61,440,000 bit,将它转换成MB为单位,相当于7.32MB。使用二级缓冲,需要 14.64MB显存;为了使用三级缓冲,则需要21.96MB显存。呵,不就是21.96MB吗,有什么大不了的?当今显卡都板载256MB显存。

  没错,由上文看来看来显存占用率不成问题。不过,一旦打开4x FSAA,这个数字就会飞速膨胀。在打开4x FSAA的时候,有多出4倍的像素进行取样,如此21.96MB乘4,变成可观的87.84MB!这就大于显存总容量的1/3了。如果这个游戏需要用200MB的空间储存材质、光影、各种贴图……等等,游戏效果就会非常变得非常糟糕,会由于不时存取硬盘产生大量停滞现象。这里只是提醒大家注意,如果发现游戏过程中存取硬盘过于频繁,则可能说明3级缓冲占用了太多显存,此时你就应该考虑降低游戏的画面设置或者购买更高档的显存容量更大的显卡了:P。

结论

  如果你特别讨厌游戏中的画面撕裂现象,而打开垂直同步又会降低帧速带来一顿一顿的副作用,试试看,或许用上面介绍的方法打开3倍缓冲,能够得到满意的效果。

请保留地址 http://www.qqread.com/hardware/vga/using/2006/08/y200365.html 更多文章 更多内容请看游戏开发网络游戏攻略专题,或进入讨论组讨论。
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
最新论坛文章
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章