大家有否发觉玩游戏时开启了同步刷新(v-sync)后帧速率就下降了?目前LCD的主流刷新率为60Hz,按理这样的刷新率玩游戏应该足够了,遗憾的是一旦刷新率稍稍下降帧速率就立刻降到30fps。先不要咒骂同步刷新,这不只是它的错,根源应该是显卡的双缓冲区设计和开启同步刷新同时造成的。 * a0 q2 J4 l' h2 ?( g# K: H* Q
0 Z! S. F9 F: V5 V: V8 P. n" I' d" a
一般的显卡都带有两个缓冲区,当前显示的图像来自于第一个缓冲区,而第二个缓冲区则准备下一帧画面的输出。当启用同步刷新后,当前画面需要等到下一个垂直空白周期(对应60Hz就是1/60一秒的时间)出现才能转换到下一帧画面,这样才能实现与显示器的同步刷新。如果你的显卡支持超过60fps的帧速率,保持同步当然不成问题,否则就糟糕了。在1/60一秒的时间内,如果第二个缓冲区还没有准备好第二帧画面,那么就需要等多一个1/60一秒才能够转换,所以帧速率就下降到30fps,这种情况下,画面看起来将会十分拖沓。; \0 u W* @, X
% D! e, Q. Z' _+ A
利用三个缓冲区就可以解决这一问题,目前ATI和NVIDIA的显卡驱动都支持开启三个缓冲区实现同步刷新,但这种功能仅对OpenGL游戏有用,对于更为普遍的D3D游戏则无能为力。% \0 S. ]6 |" k# h; k4 D
2 _9 c2 K& z# K' p) Q5 F 不过,利用DirectX Tweaker这一软件就可以通过DirectX API让D3D游戏也支持三个缓冲区,该软件拥有良好的界面,十分容易使用,不过使用前可能要先安装.NET框架。
! h( e* @, i# N6 a+ \: ^/ S% N
! K/ B4 t+ `3 p i$ E8 y1 I" w
- r9 `: d8 ]6 }' C9 l- {用户界面 ) v: v$ B$ ~7 ]& |3 H1 _! ?
4 ?( X5 ]8 _. W+ g
% y o6 `& y: j 第一步先选择要应用的游戏(上图为F.E.A.R.),输入路径,并勾选“Active”,然后点击"Modules to load"就会看见下面的对话框:
& Y; r* v u8 x2 x$ h+ p . c3 G% g4 U0 S6 C' M
; [& g, x" o, `1 m
, E' y" G9 r4 S: V- v 勾选"Present Changer",在 "Count"选项里键入“2”,然后返回刚才的“Project(Activ:F.E.A.R)”,点击"Start"就完成了。
t* Q6 J' y% B. I) b
( k3 p* ~, e/ l3 L 下面是应用该软件前后帧速率的对比:
. G0 ]2 W! x* h4 n( I% x
6 V0 ?3 M( i! g! e4 T ~- ^% @. H t0 ^应用前
u# o& A" b; P* @7 a0 q$ h
( R% M+ a: X- p+ [: z4 i$ t6 D; @4 J. e/ @+ L4 x! N5 J$ d4 u& I
& J9 R) J/ e: N应用后 s; u& F& ?, e1 @# x" O1 C# I% R
/ ?# h i* P; u; ^; d3 g
7 n! p/ a. x& D 其它设置为:
2 ]2 k: i4 ?, ]( a
& {% ? l5 |0 t. U 分辨率: 1280x1024
# Z# a4 t& }5 L0 \
, [2 _% b' G( q' P( g- p 显卡设置: All max, SoftShadow disabled7 J {+ D' ?! W3 S
& f! w* [; C- H' V* m; Z7 v
AA/AF: 0xAA / 8xAF
) A2 o, B8 B/ x) g5 L
# N$ ~, Z# M: ~) E6 u j 上两图中“Maximum”一项没有发生变化,这是由于启用同步刷新的结果(最大也只能跟显示器刷新率一致),但另外两项帧速率则大大提高了,游戏变得更加顺畅。2 Y' u j; } D& U! y
% S: G4 s* c3 L- a. M 注意事项:
k( J% C5 }+ P, z # D0 T; ^- q( c( z! C+ b; w; m$ t
三个缓冲区似乎可以带来更流畅的游戏画面,但这是有代价的,比两个缓冲区需要50%的额外缓冲空间。譬如,在1600x1200的分辨率下,每帧画面需要7.32Mb的空间存储,双缓冲区需要14.64Mb的显存,三缓冲区则需要21.96Mb,对于目前的显卡来说只是小菜一碟。但一旦开启4x FSAA后,则需要多达87.84MB的显存,超过一块256Mb的显卡的1/3显存空间,如果游戏需要200Mb的空间存储条纹、光暗、冲击等细节,开启三个缓冲区后游戏玩起来必定经常滞胀。如果你发现玩游戏时系统需要频繁地访问硬盘,这可能就是开启三个缓冲区的负面后果了。! V b0 A" L- Y
* \9 x* x: Z+ d- f5 T 总结:如果你实在不能忍受同步刷新后帧速率的下降所带来的画面断裂,DirectX Tweaker是一个不错的选择。 ftp://majorgeeks.mirror.internod ... tools/dxtweaker.zip[free][/free] |