Windows Aero如何防止屏幕破裂?


14

启用Windows Aero时,与使用没有Aero的基本主题时相比,没有任何屏幕撕裂。

但是,为什么与垂直同步游戏相比,在台式机上进行游戏时输入滞后似乎要大得多?甚至可以关闭V-sync来同步窗口游戏,这比使用游戏内置的任何方法时要好。

为什么以及如何发生或看起来发生这种情况?

Answers:


8

实际上,Aero可以避免撕裂而不必在应用程序中强制启用VSYNC的原因是因为它是一个复合窗口管理器。它相对于任何正在运行的应用程序异步绘制桌面和所有窗口。

也就是说,当您在Windows Vista / 7中启用合成(在Windows 8中始终启用合成)时,它将使用从前到后交换的最后一个图像的副本绘制所有窗口。合成器(Microsoft称为DWM,Desktop Window Manager)将启用VSYNC的所有内容进行合成,并且由于它使用最后一个完全交换的前缓冲区图像的副本进行绘制,因此每个窗口从不显示部分绘制的帧。但是,它的确有一个不利的副作用,那就是阻止原本专门设计成可吸入前端缓冲区的旧软件阻止其正常工作-但是现代软件却无法做到这一点。

简而言之,DWM增加了一层防撕裂保护。它可以使系统上运行的任何应用程序以一定的速率绘制,而与显示器的刷新率无关,并且仍然可以防止撕裂。在这样的系统上,在窗口模式下,在OpenGL或Direct3D中启用VSYNC的唯一好处是实际上限制了CPU / GPU的利用率。

这就是创建自适应VSYNC的原因,它的想法是不对不能维持显示器刷新率的应用程序施加不利影响,方法是将其强制设为较低的刷新率因子(例如60 Hz-> 30、20、15、10、12 ,6、5、4、3、2、1),但是为了限制绘图速度比监视器快的应用程序可以使用过多的CPU / GPU功能来显示图像。


5

启用Aero时,Desktop Window Manager使用双重缓冲

Windows Aero功能广泛使用双缓冲在屏幕上绘制。

资源

维基百科有这样的说法:如何将其与V-sync配合使用以防止屏幕撕裂:

在垂直消隐间隔内,驱动程序命令视频卡将屏幕外图形区域快速复制到活动显示区域(双缓冲),或将两个内存区域都视为可显示区域,然后在它们之间来回切换(页面)翻转)。


6
双缓冲并不能防止撕裂,它可以防止用户在渲染过程中看到事物。如果您使用双缓冲,并且在屏幕刷新过程中进行了页面翻转,那么您仍然会感到眼花ing乱。
Wyzard

当然,如果错误地执行双缓冲,您仍然会撕裂,但关键是可以使用DB来防止撕裂。
nitro2k01 2013年

3

双缓冲+垂直同步不会造成撕裂。Aero恰好使用该配置。


2

DWM(启用Aero效果的技术)将屏幕上的所有内容呈现为D3D表面(这使得视频可以在Flip上继续播放)。尽管游戏方法应该比通用DWM方法更好(毕竟这是它们自己的引擎),但是这种渲染技术会自动防止撕裂。因此,游戏方法可能一开始就不够好,或者没有针对您的配置进行优化。


2
就其本身而言,使用Direct3D并不能防止屏幕撕裂。这是双重缓冲。
bwDraco
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.