使用 Windows 7 Ultimate Basic 主题时,我的电脑(笔记本电脑)出现了问题。
我遇到的问题是,每当此主题处于活动状态并且我将一个窗口移到另一个窗口上时,都会出现这种“帧滞后”现象。这是我能描述的最接近的情况,下面是屏幕截图:
应用程序“滞后”到底层应用程序的帧数量各不相同。例如:当我使用 2 个记事本窗口时,只有很少的帧被遗留,而当任何窗口移动到资源管理器窗口上时,就会有很多帧。“遗留”的帧每隔 0.8 秒左右清除一次,这也因程序而异。
这只发生在基本主题上。使用 Aero 时效果很好。我的显卡完全能够渲染这个。我可以很好地运行 Crysis。它是 nVidia 9600M GS,具有 512MB RAM(M 当然表示“移动性”,因为它在笔记本电脑中)。我目前还连接了 2 个全高清显示器,但它也发生在本机笔记本电脑屏幕上,分辨率为 1440 x 900。已安装所有最新的 nVidia 驱动程序。
答案1
您遇到的情况称为“窗口撕裂”。这是由于缺少 Windows Aero 而仅在 Windows Basic 主题上发生的现象。
Aero 使用的是 Windows Vista 中引入的 DWM(桌面窗口管理器),与使用没有 DWM 的计算机相比,它与显卡和硬件加速的绑定更加紧密。
这意味着虽然 Aero 看起来确实更好,但其中很大一部分是由 GPU 而不是 CPU 渲染的。在 Windows Basic 主题中,大部分屏幕都是通过软件加速的,方法是将 WM_PAINT 消息单独发送给所有应用程序。
现在,DWM 还使用双缓冲来防止闪烁和窗口撕裂。
维基百科指出:
由于 MIL 通过缓存组合树提供保留模式图形系统,因此移动窗口时重新绘制和刷新屏幕的工作由 DWM 和 MIL 处理,从而减轻了应用程序的责任。背景数据已存在于组合树和屏幕外缓冲区中,可直接用于渲染背景,而无需后台应用程序通过向其发送 WM_PAINT 消息来重新渲染自身,就像 Vista 之前的 Windows 操作系统一样。DWM 使用双缓冲图形来防止窗口移动时出现闪烁和撕裂。合成引擎使用剔除等优化来提高性能,并且不会重新绘制未更改的区域。由于合成器支持多显示器,因此 DWM 本身也支持该功能。
现在,我认为发生这种情况的原因不是 GPU。而是 CPU。如果在 Windows Basic 主题中连接了多个显示器,那么根据显卡的性能,使用 Aero 实际上可能会更快。