大家有否发觉玩游戏时开启了同步刷新(v-sync)后帧速率就下降了?目前LCD的主流刷新率为60Hz,按理这样的刷新率玩游戏应该足够了,遗憾的是一旦刷新率稍稍下降帧速率就立刻降到30fps。先不要咒骂同步刷新,这不只是它的错,根源应该是显卡的双缓冲区设计和开启同步刷新同时造成的。 6 P* B4 J3 z+ p+ i8 \- Y0 {. H
0 m: P0 h; v/ }& A6 \ 一般的显卡都带有两个缓冲区,当前显示的图像来自于第一个缓冲区,而第二个缓冲区则准备下一帧画面的输出。当启用同步刷新后,当前画面需要等到下一个垂直空白周期(对应60Hz就是1/60一秒的时间)出现才能转换到下一帧画面,这样才能实现与显示器的同步刷新。如果你的显卡支持超过60fps的帧速率,保持同步当然不成问题,否则就糟糕了。在1/60一秒的时间内,如果第二个缓冲区还没有准备好第二帧画面,那么就需要等多一个1/60一秒才能够转换,所以帧速率就下降到30fps,这种情况下,画面看起来将会十分拖沓。7 i$ j' n3 l, @2 q6 R# Q% x
+ u/ F: H" H" A& _
利用三个缓冲区就可以解决这一问题,目前ATI和NVIDIA的显卡驱动都支持开启三个缓冲区实现同步刷新,但这种功能仅对OpenGL游戏有用,对于更为普遍的D3D游戏则无能为力。
. g0 k9 b2 V$ ?& i
$ r6 C) R$ n# s8 r! c 不过,利用DirectX Tweaker这一软件就可以通过DirectX API让D3D游戏也支持三个缓冲区,该软件拥有良好的界面,十分容易使用,不过使用前可能要先安装.NET框架。
& M8 v. U2 E0 k- k' Z9 Z) G
, T" Z. \; _. E" }1 b7 H$ T( P, K* _/ s e
用户界面
/ c1 ^' h5 k% g) B5 M( _1 J. d5 `( \- M# a7 z
2 M! W# s! u% T# v8 b( }/ r
第一步先选择要应用的游戏(上图为F.E.A.R.),输入路径,并勾选“Active”,然后点击"Modules to load"就会看见下面的对话框:. ~5 Z2 ]& P$ R9 ]# W$ [/ ~" {
0 }) {5 @& s$ r0 B+ |- G
6 v i; }2 m) g5 y& E$ r7 x; i
+ F* V2 F/ M: H2 e# Y- z 勾选"Present Changer",在 "Count"选项里键入“2”,然后返回刚才的“Project(Activ:F.E.A.R)”,点击"Start"就完成了。
2 t9 f1 c& d5 U! c2 B, W ( b5 H; t' N/ d& b5 b, c
下面是应用该软件前后帧速率的对比:& B. s3 y4 c7 t5 T0 g8 x2 `& k5 E
8 q- g" h/ e' T2 k5 z3 J1 b
应用前 ' @% |, W5 W# _$ e6 ?" B u% r9 P; |
% K0 F9 X2 ^/ P$ T% ]7 x
/ H/ T% M& m3 @/ q5 ^2 ^$ |
' o+ g3 U; ]- Q应用后
9 |8 J5 @ E; K
' B! B w* o6 F. M; O* H: p& Y0 I3 X+ j/ x% e/ u5 K% }
其它设置为:% V$ l: V9 M9 k/ _; A- n
/ p. [' F6 |: R& S% m
分辨率: 1280x1024( ]: c7 V: u- y; A/ u
# r1 t: K* P- [7 V; u) Y$ Z! g7 C
显卡设置: All max, SoftShadow disabled
5 J+ Y* |0 s2 e
7 _* h( o8 C4 \% i2 O AA/AF: 0xAA / 8xAF
/ M* Y' m9 G: t, | 3 q" \8 w" Y- l+ h, G
上两图中“Maximum”一项没有发生变化,这是由于启用同步刷新的结果(最大也只能跟显示器刷新率一致),但另外两项帧速率则大大提高了,游戏变得更加顺畅。( r" Y2 N# Q3 J4 n1 @9 ~/ K' |
( B$ V8 {2 O( G3 c3 _0 ^) j" y0 f. P/ D 注意事项:8 ?7 T- ~1 S) ~' r
: |" s/ s" F! L4 F* @4 X. f6 q
三个缓冲区似乎可以带来更流畅的游戏画面,但这是有代价的,比两个缓冲区需要50%的额外缓冲空间。譬如,在1600x1200的分辨率下,每帧画面需要7.32Mb的空间存储,双缓冲区需要14.64Mb的显存,三缓冲区则需要21.96Mb,对于目前的显卡来说只是小菜一碟。但一旦开启4x FSAA后,则需要多达87.84MB的显存,超过一块256Mb的显卡的1/3显存空间,如果游戏需要200Mb的空间存储条纹、光暗、冲击等细节,开启三个缓冲区后游戏玩起来必定经常滞胀。如果你发现玩游戏时系统需要频繁地访问硬盘,这可能就是开启三个缓冲区的负面后果了。
, r. v7 D& e: M& w& Y
. ?6 X. S0 w& S7 h% n4 w 总结:如果你实在不能忍受同步刷新后帧速率的下降所带来的画面断裂,DirectX Tweaker是一个不错的选择。 ftp://majorgeeks.mirror.internod ... tools/dxtweaker.zip[free][/free] |