大家有否发觉玩游戏时开启了同步刷新(v-sync)后帧速率就下降了?目前LCD的主流刷新率为60Hz,按理这样的刷新率玩游戏应该足够了,遗憾的是一旦刷新率稍稍下降帧速率就立刻降到30fps。先不要咒骂同步刷新,这不只是它的错,根源应该是显卡的双缓冲区设计和开启同步刷新同时造成的。 ; W# D; r+ d% j1 Z! f
3 @1 z; a/ o g5 w+ @$ H6 W
一般的显卡都带有两个缓冲区,当前显示的图像来自于第一个缓冲区,而第二个缓冲区则准备下一帧画面的输出。当启用同步刷新后,当前画面需要等到下一个垂直空白周期(对应60Hz就是1/60一秒的时间)出现才能转换到下一帧画面,这样才能实现与显示器的同步刷新。如果你的显卡支持超过60fps的帧速率,保持同步当然不成问题,否则就糟糕了。在1/60一秒的时间内,如果第二个缓冲区还没有准备好第二帧画面,那么就需要等多一个1/60一秒才能够转换,所以帧速率就下降到30fps,这种情况下,画面看起来将会十分拖沓。
4 A/ c% w* ]9 M- s7 R& y, s " D" r! T% Q# n u2 O& V/ `" c/ ?
利用三个缓冲区就可以解决这一问题,目前ATI和NVIDIA的显卡驱动都支持开启三个缓冲区实现同步刷新,但这种功能仅对OpenGL游戏有用,对于更为普遍的D3D游戏则无能为力。5 `- ?# w( k# V" U" i* n: H+ b% y
2 v2 _# r" b6 T8 O* M" ^
不过,利用DirectX Tweaker这一软件就可以通过DirectX API让D3D游戏也支持三个缓冲区,该软件拥有良好的界面,十分容易使用,不过使用前可能要先安装.NET框架。
6 q! j7 w6 w1 ^# v" ~7 a- l
) f) i; S3 v4 o, _: G& U( P
: a/ s1 ^$ \4 Y+ h- T用户界面
# U7 h: R4 p, d2 ^2 o
2 e1 X- K5 C0 f. u6 B( d; G) ^, K6 L/ w# C# J
第一步先选择要应用的游戏(上图为F.E.A.R.),输入路径,并勾选“Active”,然后点击"Modules to load"就会看见下面的对话框:, ]" c$ n3 ?5 T: J. p6 r- R
5 D8 p; ~ } V4 T7 ]% Q3 C
- }; r g9 J2 ^( a& y
- R8 [7 i, Q; K" \4 M 勾选"Present Changer",在 "Count"选项里键入“2”,然后返回刚才的“Project(Activ:F.E.A.R)”,点击"Start"就完成了。% G* {- G% p7 }0 r. @
& u6 e {7 M8 n" a& X3 U
下面是应用该软件前后帧速率的对比:! {+ q8 e7 i- G; E
3 X; \0 p7 q1 F( P- o; K8 H
应用前 8 ^, k6 |, F7 I+ N% L8 y
! _0 w, B, b- x
. x1 T* u7 m. Y- d: B3 K! I7 t' b
# T6 S/ W* h: B& t) l应用后
T/ [9 u% e& K! u
0 J+ b+ v2 h6 U, }7 q2 D! `3 Q
/ G7 ^2 a/ z4 G 其它设置为:
$ `, a+ K) [) O) q& @; x8 Y - S4 n0 i6 w0 A3 {! O' r0 ?% X
分辨率: 1280x1024. t% Y8 c6 o7 N- y3 T. Q9 d$ m
" |: j. v g7 V 显卡设置: All max, SoftShadow disabled
5 v! X0 _% Q" b, w" S/ l1 z c
. ]* @. M0 T' }8 m6 x AA/AF: 0xAA / 8xAF
/ i) |4 [6 l/ ^' b
4 g% O/ w' o% Q( t3 S 上两图中“Maximum”一项没有发生变化,这是由于启用同步刷新的结果(最大也只能跟显示器刷新率一致),但另外两项帧速率则大大提高了,游戏变得更加顺畅。, D. @+ S; P7 {: j9 P" G2 ~2 @( x
* o6 D0 q7 H* \7 g0 p0 u* m. u
注意事项:
5 e$ d3 V* t' o* w2 _: t" }* v, A7 m' C
' _! Q! B& Z7 X3 w+ V3 ~ 三个缓冲区似乎可以带来更流畅的游戏画面,但这是有代价的,比两个缓冲区需要50%的额外缓冲空间。譬如,在1600x1200的分辨率下,每帧画面需要7.32Mb的空间存储,双缓冲区需要14.64Mb的显存,三缓冲区则需要21.96Mb,对于目前的显卡来说只是小菜一碟。但一旦开启4x FSAA后,则需要多达87.84MB的显存,超过一块256Mb的显卡的1/3显存空间,如果游戏需要200Mb的空间存储条纹、光暗、冲击等细节,开启三个缓冲区后游戏玩起来必定经常滞胀。如果你发现玩游戏时系统需要频繁地访问硬盘,这可能就是开启三个缓冲区的负面后果了。
) K- G7 U* v9 }- V7 W3 E0 d& I0 z 5 U, r% ^5 h3 w
总结:如果你实在不能忍受同步刷新后帧速率的下降所带来的画面断裂,DirectX Tweaker是一个不错的选择。 ftp://majorgeeks.mirror.internod ... tools/dxtweaker.zip[free][/free] |