大家有否发觉玩游戏时开启了同步刷新(v-sync)后帧速率就下降了?目前LCD的主流刷新率为60Hz,按理这样的刷新率玩游戏应该足够了,遗憾的是一旦刷新率稍稍下降帧速率就立刻降到30fps。先不要咒骂同步刷新,这不只是它的错,根源应该是显卡的双缓冲区设计和开启同步刷新同时造成的。
5 j5 ?( k) f& h+ @
6 l# R7 [/ {% q$ r, [9 w 一般的显卡都带有两个缓冲区,当前显示的图像来自于第一个缓冲区,而第二个缓冲区则准备下一帧画面的输出。当启用同步刷新后,当前画面需要等到下一个垂直空白周期(对应60Hz就是1/60一秒的时间)出现才能转换到下一帧画面,这样才能实现与显示器的同步刷新。如果你的显卡支持超过60fps的帧速率,保持同步当然不成问题,否则就糟糕了。在1/60一秒的时间内,如果第二个缓冲区还没有准备好第二帧画面,那么就需要等多一个1/60一秒才能够转换,所以帧速率就下降到30fps,这种情况下,画面看起来将会十分拖沓。" t7 ]7 i, Y" m% D* w
2 J! n N0 L- @, f w 利用三个缓冲区就可以解决这一问题,目前ATI和NVIDIA的显卡驱动都支持开启三个缓冲区实现同步刷新,但这种功能仅对OpenGL游戏有用,对于更为普遍的D3D游戏则无能为力。
$ b; s3 X9 B o+ Q1 ]( _
; L x( Y* s8 W( ?, D 不过,利用DirectX Tweaker这一软件就可以通过DirectX API让D3D游戏也支持三个缓冲区,该软件拥有良好的界面,十分容易使用,不过使用前可能要先安装.NET框架。
+ z% d1 f( o6 \- Q" M5 m2 x' C% Q * M- I# ^' r& d5 f
& q* ^ h9 x) n+ t8 i0 T: p
用户界面 # r9 z5 u3 P/ K7 U! D y
T* Z7 e* |4 p2 V/ u6 V' z' a
$ v( P. C4 I& v 第一步先选择要应用的游戏(上图为F.E.A.R.),输入路径,并勾选“Active”,然后点击"Modules to load"就会看见下面的对话框:
8 M" r( w2 m1 r8 @
- K0 f: B% z9 }1 n/ w+ d/ I, \7 Q9 M& ]2 J6 H6 l+ G- H# {1 T
' V$ \8 ~) ~1 S3 K, W( K 勾选"Present Changer",在 "Count"选项里键入“2”,然后返回刚才的“Project(Activ:F.E.A.R)”,点击"Start"就完成了。7 ?# U/ [/ m" r- y5 d
# A2 @( k# N5 H& j8 D1 L
下面是应用该软件前后帧速率的对比:) g, ^( \3 g$ j q) Y: A" y2 G
, e! l3 t' H* C$ a应用前 1 e( H' d+ q& ?% \" l5 B
* W2 R, f2 d! M
( ~" f6 |4 }1 m6 H
% P' B4 i8 E# y$ s$ e) e: l; d
应用后 % L# E4 v1 T+ O3 a/ Z$ Z
1 W* w* E8 u# U; g' A! p( q4 W; |
4 z" k/ r2 ]/ x& H1 n' v 其它设置为:
% V7 a, f# m/ C: J3 z8 t 8 N4 k2 G& N. z T' v& Y
分辨率: 1280x1024
' j7 E9 N* q0 J: m0 d
! }9 I- m. O5 v5 d) p" H* k+ M' r 显卡设置: All max, SoftShadow disabled
# R- l- o. q& {8 ]% Q7 X
$ t9 G/ {& k7 b' i% U AA/AF: 0xAA / 8xAF- @0 f- ?9 p3 {7 c
! j9 k7 P4 k2 {# S b- b V: E
上两图中“Maximum”一项没有发生变化,这是由于启用同步刷新的结果(最大也只能跟显示器刷新率一致),但另外两项帧速率则大大提高了,游戏变得更加顺畅。6 s, u& w& k/ f. s: t
; D& o7 @1 v/ _3 ?9 H: |" i' `
注意事项:! g3 d$ s" a3 _" a; ]0 H
/ V7 r; [6 o8 r) [) Y! m# t 三个缓冲区似乎可以带来更流畅的游戏画面,但这是有代价的,比两个缓冲区需要50%的额外缓冲空间。譬如,在1600x1200的分辨率下,每帧画面需要7.32Mb的空间存储,双缓冲区需要14.64Mb的显存,三缓冲区则需要21.96Mb,对于目前的显卡来说只是小菜一碟。但一旦开启4x FSAA后,则需要多达87.84MB的显存,超过一块256Mb的显卡的1/3显存空间,如果游戏需要200Mb的空间存储条纹、光暗、冲击等细节,开启三个缓冲区后游戏玩起来必定经常滞胀。如果你发现玩游戏时系统需要频繁地访问硬盘,这可能就是开启三个缓冲区的负面后果了。- z+ j9 r+ h6 D1 ?7 D3 d' P+ Q; j
: B# B2 ?. B' C: w) s( ?; f" \
总结:如果你实在不能忍受同步刷新后帧速率的下降所带来的画面断裂,DirectX Tweaker是一个不错的选择。 ftp://majorgeeks.mirror.internod ... tools/dxtweaker.zip[free][/free] |