大家有否发觉玩游戏时开启了同步刷新(v-sync)后帧速率就下降了?目前LCD的主流刷新率为60Hz,按理这样的刷新率玩游戏应该足够了,遗憾的是一旦刷新率稍稍下降帧速率就立刻降到30fps。先不要咒骂同步刷新,这不只是它的错,根源应该是显卡的双缓冲区设计和开启同步刷新同时造成的。 & z/ [+ K- K: O5 A( o4 [
: n/ c5 [# |0 }' r& d7 w0 k
一般的显卡都带有两个缓冲区,当前显示的图像来自于第一个缓冲区,而第二个缓冲区则准备下一帧画面的输出。当启用同步刷新后,当前画面需要等到下一个垂直空白周期(对应60Hz就是1/60一秒的时间)出现才能转换到下一帧画面,这样才能实现与显示器的同步刷新。如果你的显卡支持超过60fps的帧速率,保持同步当然不成问题,否则就糟糕了。在1/60一秒的时间内,如果第二个缓冲区还没有准备好第二帧画面,那么就需要等多一个1/60一秒才能够转换,所以帧速率就下降到30fps,这种情况下,画面看起来将会十分拖沓。9 Z9 \. z) T% E; `- k0 S
! O1 y! v1 U9 I0 C$ A% e: x
利用三个缓冲区就可以解决这一问题,目前ATI和NVIDIA的显卡驱动都支持开启三个缓冲区实现同步刷新,但这种功能仅对OpenGL游戏有用,对于更为普遍的D3D游戏则无能为力。
" I1 ^) ?5 Q& H* _+ n" l, L
/ q( M; M2 P) j" g' ]7 z+ H- N! x$ ] 不过,利用DirectX Tweaker这一软件就可以通过DirectX API让D3D游戏也支持三个缓冲区,该软件拥有良好的界面,十分容易使用,不过使用前可能要先安装.NET框架。# i' }' b a- F
+ z* j0 x2 g. @ A" s
; q8 ]& J( C# Z9 v) g! ~6 s; B用户界面 $ T4 Z3 c7 p" d
$ e. h7 l" l7 x) d- x. ]6 H
+ o7 {6 \) |: a9 W6 V5 Y
第一步先选择要应用的游戏(上图为F.E.A.R.),输入路径,并勾选“Active”,然后点击"Modules to load"就会看见下面的对话框:
, `, K! u& f" E1 ]7 {3 X0 _ $ i3 ]) u5 n8 l& I, N) ^5 t& P
+ {0 v8 S9 d2 U: I: k' Z3 T
4 Y/ L2 r e0 f: j8 z 勾选"Present Changer",在 "Count"选项里键入“2”,然后返回刚才的“Project(Activ:F.E.A.R)”,点击"Start"就完成了。- o" X% z5 y3 S
! X# c; R7 c7 U9 H5 Z 下面是应用该软件前后帧速率的对比:
7 x' _! d. u* i% H 8 c# R' q) M! {; p& {( m
应用前 , {# r, n9 r; B- V: ]! Y R3 s
) w1 ?1 v' v7 F% V; X. a
0 G7 C C- j$ H& m" P5 W. v0 {
& Z8 H9 i0 h \6 m6 t! ?% d
应用后 ' {* W, o* h, U' ] s
" M g! [9 M8 N r
' q2 b6 B# J, a G8 L+ f 其它设置为:4 r/ c6 x+ s( G# W$ j% s
- i- o" M8 [1 r) H2 b
分辨率: 1280x1024
" r# ?1 Q7 i3 t8 f$ j
! H8 k/ @6 d; C E 显卡设置: All max, SoftShadow disabled; W5 }% a( x/ K' X7 x
/ g4 X9 f7 x; C' R3 s AA/AF: 0xAA / 8xAF9 c& H. C: y& j C- `0 u& A
6 M2 |1 s/ \+ s! o- m, X" A
上两图中“Maximum”一项没有发生变化,这是由于启用同步刷新的结果(最大也只能跟显示器刷新率一致),但另外两项帧速率则大大提高了,游戏变得更加顺畅。
# o8 P1 b7 Z4 K
& t; y! W0 a7 S: O5 N 注意事项:
5 a3 o6 B- t! Z2 b& J
6 K2 w( D" e$ ~$ @1 T& C6 x& Q 三个缓冲区似乎可以带来更流畅的游戏画面,但这是有代价的,比两个缓冲区需要50%的额外缓冲空间。譬如,在1600x1200的分辨率下,每帧画面需要7.32Mb的空间存储,双缓冲区需要14.64Mb的显存,三缓冲区则需要21.96Mb,对于目前的显卡来说只是小菜一碟。但一旦开启4x FSAA后,则需要多达87.84MB的显存,超过一块256Mb的显卡的1/3显存空间,如果游戏需要200Mb的空间存储条纹、光暗、冲击等细节,开启三个缓冲区后游戏玩起来必定经常滞胀。如果你发现玩游戏时系统需要频繁地访问硬盘,这可能就是开启三个缓冲区的负面后果了。( o$ p- B* `& P6 S
) g0 E. c" n& S4 C9 ^* G u 总结:如果你实在不能忍受同步刷新后帧速率的下降所带来的画面断裂,DirectX Tweaker是一个不错的选择。 ftp://majorgeeks.mirror.internod ... tools/dxtweaker.zip[free][/free] |