大家有否发觉玩游戏时开启了同步刷新(v-sync)后帧速率就下降了?目前LCD的主流刷新率为60Hz,按理这样的刷新率玩游戏应该足够了,遗憾的是一旦刷新率稍稍下降帧速率就立刻降到30fps。先不要咒骂同步刷新,这不只是它的错,根源应该是显卡的双缓冲区设计和开启同步刷新同时造成的。
7 V5 u6 I5 `0 H' q 1 _) |" b+ R& y. i [+ t
一般的显卡都带有两个缓冲区,当前显示的图像来自于第一个缓冲区,而第二个缓冲区则准备下一帧画面的输出。当启用同步刷新后,当前画面需要等到下一个垂直空白周期(对应60Hz就是1/60一秒的时间)出现才能转换到下一帧画面,这样才能实现与显示器的同步刷新。如果你的显卡支持超过60fps的帧速率,保持同步当然不成问题,否则就糟糕了。在1/60一秒的时间内,如果第二个缓冲区还没有准备好第二帧画面,那么就需要等多一个1/60一秒才能够转换,所以帧速率就下降到30fps,这种情况下,画面看起来将会十分拖沓。+ V4 A5 K% i, |; @, X8 |
1 [% H' P& D( U! P# ^9 T. S+ ^8 t& H
利用三个缓冲区就可以解决这一问题,目前ATI和NVIDIA的显卡驱动都支持开启三个缓冲区实现同步刷新,但这种功能仅对OpenGL游戏有用,对于更为普遍的D3D游戏则无能为力。6 i, j5 l; l5 P- a
1 P9 p: v1 s8 n, [
不过,利用DirectX Tweaker这一软件就可以通过DirectX API让D3D游戏也支持三个缓冲区,该软件拥有良好的界面,十分容易使用,不过使用前可能要先安装.NET框架。# t& q# M6 ]% V) ^8 l
# H- j1 C4 ^) Q! b
; [0 x) ~: Q6 O: r- v) I
用户界面 / Z( t# Z' ?% l+ d. O' h
9 ^: z) e$ a" a# Z" v- ?5 ?: t6 n5 u
第一步先选择要应用的游戏(上图为F.E.A.R.),输入路径,并勾选“Active”,然后点击"Modules to load"就会看见下面的对话框:
+ ]8 N$ l$ D% k: M3 e
0 `9 a# V' O$ L! O
+ Q1 L7 f; t3 B" p, ?% H; V P8 ^
勾选"Present Changer",在 "Count"选项里键入“2”,然后返回刚才的“Project(Activ:F.E.A.R)”,点击"Start"就完成了。
1 `' g) e6 J8 k* M ) q0 A( J9 [ n' u9 G
下面是应用该软件前后帧速率的对比:
, u: S8 S2 [; @! e* ~
0 k6 b( R8 P# q1 N; G0 b- S4 E; o应用前 ; O' O0 Z$ p* ~+ q _$ C
$ `( @, R$ a5 C5 L
~! k6 Q) A! D) o6 n 5 a3 R( O4 V) ~" X/ E1 q
应用后
) ^. l* g5 @' |7 X
: C$ r) Y3 _- A
1 N9 M! }! V# X1 e" O 其它设置为:
! j& J4 y( \# {/ [ Z+ }8 M
# d% A! c% p u2 X+ M 分辨率: 1280x10245 z1 P3 e% s0 J9 s0 W9 o7 S" u
. U/ o! T3 P; U7 j( i 显卡设置: All max, SoftShadow disabled, H/ s/ I9 z# ]2 o
& u) w3 ?& X3 V" }& X AA/AF: 0xAA / 8xAF
2 [, d6 z( g/ W+ R8 L# M2 ^9 e4 b , n# a- H6 x( M4 S
上两图中“Maximum”一项没有发生变化,这是由于启用同步刷新的结果(最大也只能跟显示器刷新率一致),但另外两项帧速率则大大提高了,游戏变得更加顺畅。
* z# @+ R' N; G' @ & Y: C/ ?3 Q. E
注意事项:
! @ S ?# Z( q! m c* h, e+ s4 w3 y* m
三个缓冲区似乎可以带来更流畅的游戏画面,但这是有代价的,比两个缓冲区需要50%的额外缓冲空间。譬如,在1600x1200的分辨率下,每帧画面需要7.32Mb的空间存储,双缓冲区需要14.64Mb的显存,三缓冲区则需要21.96Mb,对于目前的显卡来说只是小菜一碟。但一旦开启4x FSAA后,则需要多达87.84MB的显存,超过一块256Mb的显卡的1/3显存空间,如果游戏需要200Mb的空间存储条纹、光暗、冲击等细节,开启三个缓冲区后游戏玩起来必定经常滞胀。如果你发现玩游戏时系统需要频繁地访问硬盘,这可能就是开启三个缓冲区的负面后果了。+ Q/ @5 k; x) I7 M O h; w
; A8 a* I) P4 w; s; m4 \7 ] 总结:如果你实在不能忍受同步刷新后帧速率的下降所带来的画面断裂,DirectX Tweaker是一个不错的选择。 ftp://majorgeeks.mirror.internod ... tools/dxtweaker.zip[free][/free] |