大家有否发觉玩游戏时开启了同步刷新(v-sync)后帧速率就下降了?目前LCD的主流刷新率为60Hz,按理这样的刷新率玩游戏应该足够了,遗憾的是一旦刷新率稍稍下降帧速率就立刻降到30fps。先不要咒骂同步刷新,这不只是它的错,根源应该是显卡的双缓冲区设计和开启同步刷新同时造成的。
# c" @+ O% U+ ~- l0 T - }* Q; A9 l$ d) l% G# g) K
一般的显卡都带有两个缓冲区,当前显示的图像来自于第一个缓冲区,而第二个缓冲区则准备下一帧画面的输出。当启用同步刷新后,当前画面需要等到下一个垂直空白周期(对应60Hz就是1/60一秒的时间)出现才能转换到下一帧画面,这样才能实现与显示器的同步刷新。如果你的显卡支持超过60fps的帧速率,保持同步当然不成问题,否则就糟糕了。在1/60一秒的时间内,如果第二个缓冲区还没有准备好第二帧画面,那么就需要等多一个1/60一秒才能够转换,所以帧速率就下降到30fps,这种情况下,画面看起来将会十分拖沓。! e& d. C+ B3 c" m0 E
, [& r7 D3 [! \. V
利用三个缓冲区就可以解决这一问题,目前ATI和NVIDIA的显卡驱动都支持开启三个缓冲区实现同步刷新,但这种功能仅对OpenGL游戏有用,对于更为普遍的D3D游戏则无能为力。! s: P5 b4 l# H- f# \6 ~8 G
0 S3 w9 k/ l) G7 o 不过,利用DirectX Tweaker这一软件就可以通过DirectX API让D3D游戏也支持三个缓冲区,该软件拥有良好的界面,十分容易使用,不过使用前可能要先安装.NET框架。
, h: F( r3 S6 x0 t
( k5 c7 H' O' s J4 w
; w [+ |( a% {" [5 a( N用户界面
) g+ M. L- b" B- ^4 M( q* T! ?) g$ A
y1 u3 o t& b$ i" N4 ?4 d' k& K! @( l/ n' u2 l( c7 j
第一步先选择要应用的游戏(上图为F.E.A.R.),输入路径,并勾选“Active”,然后点击"Modules to load"就会看见下面的对话框:
3 d V& I2 R7 T& ?, u 2 S0 G8 w2 ]. g
1 @& v" K+ G$ Q+ s4 g5 U- V7 w0 T9 m% H
勾选"Present Changer",在 "Count"选项里键入“2”,然后返回刚才的“Project(Activ:F.E.A.R)”,点击"Start"就完成了。+ b9 q/ Z3 A& A7 `
) c+ q0 m( o" S7 [ 下面是应用该软件前后帧速率的对比:
1 B+ c6 X, c& \1 b1 o5 }
2 n* Q; `0 }. n5 i% B! x8 F应用前 4 L9 z3 o2 c- Q% v
r$ N' E x! t2 a) x
d& E- Q& t+ ~3 U
, x/ s/ q& N2 `应用后 4 D f6 ]* I: l
+ u9 a; M$ m- n }: }; i
. I' E5 N8 w9 k( u; v5 I 其它设置为:1 C' h3 L% M; P
' K3 T% v' {9 M! E7 \3 G, t6 C 分辨率: 1280x1024% `; q8 o* m$ X4 ?1 o( V: \" g
8 ~. i+ V7 c) M* O- v r9 u
显卡设置: All max, SoftShadow disabled
! y8 D/ y& Y) k
2 X; b2 G/ g. Q! U0 w" O) e: s) R6 r AA/AF: 0xAA / 8xAF
5 G: L, O, k9 `0 w1 i " w8 C; }$ K. O: f6 R/ P; Y
上两图中“Maximum”一项没有发生变化,这是由于启用同步刷新的结果(最大也只能跟显示器刷新率一致),但另外两项帧速率则大大提高了,游戏变得更加顺畅。
* O1 X7 L0 @0 W- _ # ^* m e6 n) e; m
注意事项:
' ~: a7 h2 E+ ^% |, m2 N # ^/ {% W1 M/ l1 y! Q
三个缓冲区似乎可以带来更流畅的游戏画面,但这是有代价的,比两个缓冲区需要50%的额外缓冲空间。譬如,在1600x1200的分辨率下,每帧画面需要7.32Mb的空间存储,双缓冲区需要14.64Mb的显存,三缓冲区则需要21.96Mb,对于目前的显卡来说只是小菜一碟。但一旦开启4x FSAA后,则需要多达87.84MB的显存,超过一块256Mb的显卡的1/3显存空间,如果游戏需要200Mb的空间存储条纹、光暗、冲击等细节,开启三个缓冲区后游戏玩起来必定经常滞胀。如果你发现玩游戏时系统需要频繁地访问硬盘,这可能就是开启三个缓冲区的负面后果了。6 w$ D4 `& K0 I
* z$ {+ e; W8 f) \ 总结:如果你实在不能忍受同步刷新后帧速率的下降所带来的画面断裂,DirectX Tweaker是一个不错的选择。 ftp://majorgeeks.mirror.internod ... tools/dxtweaker.zip[free][/free] |