大家有否发觉玩游戏时开启了同步刷新(v-sync)后帧速率就下降了?目前LCD的主流刷新率为60Hz,按理这样的刷新率玩游戏应该足够了,遗憾的是一旦刷新率稍稍下降帧速率就立刻降到30fps。先不要咒骂同步刷新,这不只是它的错,根源应该是显卡的双缓冲区设计和开启同步刷新同时造成的。
7 Y* T1 ]0 A# w! h
# Z/ J+ y) l% P& x 一般的显卡都带有两个缓冲区,当前显示的图像来自于第一个缓冲区,而第二个缓冲区则准备下一帧画面的输出。当启用同步刷新后,当前画面需要等到下一个垂直空白周期(对应60Hz就是1/60一秒的时间)出现才能转换到下一帧画面,这样才能实现与显示器的同步刷新。如果你的显卡支持超过60fps的帧速率,保持同步当然不成问题,否则就糟糕了。在1/60一秒的时间内,如果第二个缓冲区还没有准备好第二帧画面,那么就需要等多一个1/60一秒才能够转换,所以帧速率就下降到30fps,这种情况下,画面看起来将会十分拖沓。+ L4 x( |$ H/ v/ O
: J' K( R v$ P: f 利用三个缓冲区就可以解决这一问题,目前ATI和NVIDIA的显卡驱动都支持开启三个缓冲区实现同步刷新,但这种功能仅对OpenGL游戏有用,对于更为普遍的D3D游戏则无能为力。6 }) R8 F2 y+ v" u( ~; S
. _6 {% B% R. n+ t 不过,利用DirectX Tweaker这一软件就可以通过DirectX API让D3D游戏也支持三个缓冲区,该软件拥有良好的界面,十分容易使用,不过使用前可能要先安装.NET框架。- X' o2 f/ Z9 ~1 k# W) I5 ^5 U
0 f& I, I0 z. Q( M5 B; a' d6 h) L
4 Z5 {; |" i: L8 E a- Q用户界面
3 X6 d: e; V3 _% y5 m
* J, Z$ z% l) Y7 B1 w6 B
- R2 h9 R8 `* Z9 W! q; j 第一步先选择要应用的游戏(上图为F.E.A.R.),输入路径,并勾选“Active”,然后点击"Modules to load"就会看见下面的对话框:+ v: H, J I9 v* ^5 `- r
# R) S1 ^9 z! d9 ?
3 B( c! ^* e! u3 N; {' T3 I e
" \7 {. f. J. f0 B9 [! y6 B4 J 勾选"Present Changer",在 "Count"选项里键入“2”,然后返回刚才的“Project(Activ:F.E.A.R)”,点击"Start"就完成了。
8 F, z% k1 z9 U( Z* c* B3 g& H2 u * N1 d/ t* f4 ~/ E4 }! t2 g8 R
下面是应用该软件前后帧速率的对比:6 e9 Q+ E1 W# ?6 a" ]
2 B& I8 z, _) B- a$ `应用前 , R8 Y/ w% {" j# ]
) [" d, D4 k/ d8 k3 l) W* \5 V& Z& G: T) h# |
* F5 i' e' R& U
应用后
3 H8 R* y0 U. c+ k8 Z0 C) I
9 J l% @+ J4 k+ \) ~% l8 ]; @2 U( |+ W. \% @; N- e7 \3 b
其它设置为:4 H8 Z0 ^ P$ ]5 w0 ]
- [7 Y3 Z+ _, Q8 M p3 n& U
分辨率: 1280x1024
$ k0 y/ O7 F" L- w; F& d( e6 V 1 w9 H8 } i6 U
显卡设置: All max, SoftShadow disabled
( d& h: M: w6 u3 A) M, ` - N6 n0 P8 E! t1 s
AA/AF: 0xAA / 8xAF! V( l) y x: d' m& W5 Y5 G& P
$ d" u7 a# v! i' K
上两图中“Maximum”一项没有发生变化,这是由于启用同步刷新的结果(最大也只能跟显示器刷新率一致),但另外两项帧速率则大大提高了,游戏变得更加顺畅。
d% V7 o0 D) W+ C 7 U' V* w; C* I5 \- j3 D
注意事项:
# m2 T1 `4 D/ ]+ G7 u 1 J' q! X. |. x+ ^
三个缓冲区似乎可以带来更流畅的游戏画面,但这是有代价的,比两个缓冲区需要50%的额外缓冲空间。譬如,在1600x1200的分辨率下,每帧画面需要7.32Mb的空间存储,双缓冲区需要14.64Mb的显存,三缓冲区则需要21.96Mb,对于目前的显卡来说只是小菜一碟。但一旦开启4x FSAA后,则需要多达87.84MB的显存,超过一块256Mb的显卡的1/3显存空间,如果游戏需要200Mb的空间存储条纹、光暗、冲击等细节,开启三个缓冲区后游戏玩起来必定经常滞胀。如果你发现玩游戏时系统需要频繁地访问硬盘,这可能就是开启三个缓冲区的负面后果了。
- l6 N. S$ l& i4 Z- x ~; d
8 Z+ ?. S* |3 D+ y0 P 总结:如果你实在不能忍受同步刷新后帧速率的下降所带来的画面断裂,DirectX Tweaker是一个不错的选择。 ftp://majorgeeks.mirror.internod ... tools/dxtweaker.zip[free][/free] |