大家有否发觉玩游戏时开启了同步刷新(v-sync)后帧速率就下降了?目前LCD的主流刷新率为60Hz,按理这样的刷新率玩游戏应该足够了,遗憾的是一旦刷新率稍稍下降帧速率就立刻降到30fps。先不要咒骂同步刷新,这不只是它的错,根源应该是显卡的双缓冲区设计和开启同步刷新同时造成的。
7 N5 v8 P6 |, U2 x) ^8 t3 X7 E 0 J, F1 C, x% Y
一般的显卡都带有两个缓冲区,当前显示的图像来自于第一个缓冲区,而第二个缓冲区则准备下一帧画面的输出。当启用同步刷新后,当前画面需要等到下一个垂直空白周期(对应60Hz就是1/60一秒的时间)出现才能转换到下一帧画面,这样才能实现与显示器的同步刷新。如果你的显卡支持超过60fps的帧速率,保持同步当然不成问题,否则就糟糕了。在1/60一秒的时间内,如果第二个缓冲区还没有准备好第二帧画面,那么就需要等多一个1/60一秒才能够转换,所以帧速率就下降到30fps,这种情况下,画面看起来将会十分拖沓。$ r$ j# Z% O+ C, @. E
, V( b* {% i. x V) M5 J) D/ } 利用三个缓冲区就可以解决这一问题,目前ATI和NVIDIA的显卡驱动都支持开启三个缓冲区实现同步刷新,但这种功能仅对OpenGL游戏有用,对于更为普遍的D3D游戏则无能为力。
& N8 i. i/ K# D5 j4 v" E J* v, s2 C0 z
不过,利用DirectX Tweaker这一软件就可以通过DirectX API让D3D游戏也支持三个缓冲区,该软件拥有良好的界面,十分容易使用,不过使用前可能要先安装.NET框架。. S5 r+ i; }( Y1 p
/ }2 U: d% [2 M0 s" w8 t; O
: \3 W8 M0 ?0 S( u E9 M6 P* C用户界面
8 m+ u( \! S) d& \, W! |# |! t& D, ~- t% P6 z2 x; l$ Q
3 T _% w9 ]) r$ c
第一步先选择要应用的游戏(上图为F.E.A.R.),输入路径,并勾选“Active”,然后点击"Modules to load"就会看见下面的对话框:5 d' u+ H& ^, t. V L/ E$ [. K) f
- S" W' W* f+ _" k3 Y5 e. r2 P. _, j" p, C: C
% s3 _3 f# [" N8 D
勾选"Present Changer",在 "Count"选项里键入“2”,然后返回刚才的“Project(Activ:F.E.A.R)”,点击"Start"就完成了。0 T- }0 U5 `3 x8 G
9 Q k/ ?; i- ]& C 下面是应用该软件前后帧速率的对比:9 |' d8 g/ j( ^# }8 Z& l7 Z
8 Q# K/ L8 b) H _3 V3 @
应用前
1 I2 ^9 [/ J) D; C; x
; [) H: U/ G+ u6 b" g* v4 a& V" ]6 x5 i# Y! r
! Y, r3 D ?( c8 f
应用后
9 a8 U! x& C7 y7 U/ A
" r( `& t9 g5 O0 ~
. A) \& ]: }* b. W, l2 K5 m7 \ 其它设置为:
$ B7 _+ K7 N T3 \4 A' d , V4 T. |: `+ j0 h! ^
分辨率: 1280x1024+ M m" l+ w+ N* w6 B
: a4 n% U! c3 z% f/ }2 t
显卡设置: All max, SoftShadow disabled+ g* v1 Y, B* i8 J
7 H; y4 ]- q" M, c9 ] AA/AF: 0xAA / 8xAF9 n* W1 F5 ?$ b* [
" |& N+ E2 N, x 上两图中“Maximum”一项没有发生变化,这是由于启用同步刷新的结果(最大也只能跟显示器刷新率一致),但另外两项帧速率则大大提高了,游戏变得更加顺畅。
% T8 I: | Z$ o, ]7 v ( C( u- l% |2 t5 o$ G6 ^' V$ R
注意事项:
" y8 G" [+ {% p. X 9 T$ U( d# ]( g
三个缓冲区似乎可以带来更流畅的游戏画面,但这是有代价的,比两个缓冲区需要50%的额外缓冲空间。譬如,在1600x1200的分辨率下,每帧画面需要7.32Mb的空间存储,双缓冲区需要14.64Mb的显存,三缓冲区则需要21.96Mb,对于目前的显卡来说只是小菜一碟。但一旦开启4x FSAA后,则需要多达87.84MB的显存,超过一块256Mb的显卡的1/3显存空间,如果游戏需要200Mb的空间存储条纹、光暗、冲击等细节,开启三个缓冲区后游戏玩起来必定经常滞胀。如果你发现玩游戏时系统需要频繁地访问硬盘,这可能就是开启三个缓冲区的负面后果了。
$ P( ]" K6 F: h( ~& ]
% H3 J! ^& ~" [2 j5 X/ O% r 总结:如果你实在不能忍受同步刷新后帧速率的下降所带来的画面断裂,DirectX Tweaker是一个不错的选择。 ftp://majorgeeks.mirror.internod ... tools/dxtweaker.zip[free][/free] |