Aero,又叫Aero Glass,是从Windows Vista开始引入的毛玻璃风格的界面,微软全新推出的操作系统Windows 7也继承了这种界面设计。它的效果确实让人眼前一亮,然而很多人却认为这个美轮美奂的界面是华而不实的花瓶。那么,Aero界面真的是华而不实吗?非也!
拥抱Windows7——解读Aero
微软WindowsVista系统由于生不逢时而惹来了很多不好的名声,很多人更是人云亦云,并仅从其表面主观判断这个系统的好坏,因而出现了很多持有“Aero无用”或“Aero华而不实”之类的观点的人。
对于全新推出的Windows7操作系统,由于有Vista打下的基础(硬件驱动以及软件的成熟),加上微软在Win7上付出的努力,这个新一代的操作系统获得了不错的反响。大家都逐渐愿意去关注她,拥抱她。正好给了我一个机会为Aero平反。
本文将通过简述Aero的基本工作原理来讲述Aero除了给我们带来华丽的界面之外还给我们带来什么样的好处,并让大家对Windows 7有更多的了解。评价一样事物,不应只看其表面,更应该看清楚它的“心”。
传统桌面渲染模式的缺陷
下图的现象相信你非常熟悉:
图1
为什么会这样?要解析清楚这个,我们就需要了解一下传统的Windows桌面渲染原理。
在WindowsVista之前,Windows只有一个桌面缓存,并且所有的程序窗口都直接在那个缓存上进行渲染。
这样说或许比较抽象,用个比较形象的说法就是,你所看到的整个屏幕上的画面就相当于一张画在一张纸上的画。对,就是只有一张纸。
这样造成的结果是什么呢?我们再来看。
图2有2个计算器窗口,其中一个被另一个覆盖了一部分窗口内容。而被覆盖的那个计算器的窗口内容,实际上就只有看得见的那部分(参见图3)。
图2
图3
这是因为所有窗口都只在一个缓存上直接渲染(绘图)的关系。试想一下,一张纸上的内容,除了你所能够看到的那些部分之外,还会有什么?
所以当我们移动上面的那个计算器窗口的时候,下面那个计算器的窗口就要重绘,整个画面都需要重绘。
而当我们在另一个应用程序上快速来回移动窗口时,由于下面的窗口更新速度太慢,没能及时重绘窗口,从而形成了图1的那种撕裂现象。与此同时,CPU占用率也会变得很高。
并且最终的桌面渲染是由GDI和GDI+图形引擎来渲染的,在高分辨率的情况下,渲染出来的画面也不够细腻。
传统的桌面渲染由于存在撕裂现象、画面不流畅、CPU占用率高和画面粗糙这些问题,显然不能适应未来的发展,而且所有的这些缺陷在高DPI的显示器下会变得更明显。
Aero的真身——桌面窗口管理器(DWM)
桌面窗口管理器与桌面合成
桌面窗口管理器(DesktopWindow Manager,DWM)是从Vista开始引入的一个新组件,它使用全新的技术来渲染桌面——桌面合成(Desktop Composition)。
Aero界面是基于DWM的。开启DWM后,所有窗口都有自己独立的缓存来进行渲染,然后由DWM进行管理并获取所有缓存的内容,再通过桌面合成组合出最终的桌面。
图4 桌面合成
这就好比用多张独立的画来叠放出一张新的画出来。如果你懂得图层这个概念就能更好地理解这一点了。
进阶阅读:DWM只会为Top-Level(请意会)的窗口开辟出独立的缓存来渲染。对于MDI应用程序,它的所有MDI子窗口都会跟主窗口合并为一个窗口,并由DWM开辟出一个缓存来渲染。也就是说,所有MDI子窗口都不会有独立的渲染缓存。
当今的显卡发展越来越快,性能也越来越强大,可是除了玩3D游戏和多媒体应用之外,显卡的资源根本没有得到充分利用。
而传统的基于GDI引擎的显示技术也很难实现平滑流畅的动画效果,于是,为了更充分地利用显卡的资源以及为用户提供更高的视觉体验,DWM使用了DirectX来渲染桌面。
桌面合成技术结合显卡强大的图形处理能力,为我们带来了这些好处:
1. 告别撕裂现象
由于每个窗口都有独立的缓存来渲染自身,撕裂现象将不再出现。
同时,以往拖动播放视频的窗口出现的图像跳帧现象也会被杜绝。现在即使你不停地拖动播放视频的窗口,图象也可以流畅的显示。
2. 更低的CPU占用率
桌面合成的设计加上显卡图形处理器(GPU)的运算能力,快速拖动窗体时的CPU占用率会变得很低。不仅如此,视频播放的CPU占用率也会更低。
3. 实时缩略图
使用独立缓存来渲染窗口,窗口不再像图3那样残缺不全,实时更新的窗口缩略图也因此得以实现(如图5)。实时缩略图能够在一定程度上提高我们的工作效率,Win7的超级任务栏在这方面发挥得很好。
图5
4. 更酷、更实用的用户界面
仍然以独立缓存为基础,再借助强大的DirectX,诸如毛玻璃窗口边框、Flip3D窗口变换动画(如图6)等动态效果都能轻松实现。在带给用户前所未有的视觉体验的同时,也具备很好的实用性。毛玻璃的窗口边框,能让用户更专注于内容;全新的基于实时缩略图的Alt+Tab窗口切换以及Flip3D(组合键:Ctrl+Win+Tab)的3D窗口切换,能让用户轻松遍历所有窗口,窗口切换更直观、更有效率;Win7新增的Aero Peek也同样具备很好的实用性。
图6
5. 高分辨率支持
DWM技术为高分辨率显示器提供更好的支持,而且对于120DPI以上的显示器,画面也依然平滑流畅、细腻。
开启Aero之后,我们的桌面就相当于一个全屏幕的Direct3D应用程序。只不过我们玩的不是游戏,而是窗口。:-)
3D桌面因此而得名。很多人误解了,以为Aero之所以叫3D桌面是因为图6那个3D效果。错了,其实这是因为Aero使用3D技术来渲染才叫3D桌面的。(跟朋友交流过后,觉得有必要补充一下这点)
小提示:
图7
全新的显示驱动模型——WDDM
说到这里,不得不提一下WDDM(Windows DisplayDriver Model,Windows显示驱动模型)。
由于DWM使用DirectX来渲染桌面, DWM会与其它的应用程序共享视频内存资源,比如DirectX应用程序、视频回放。这样会产生一系列的问题,旧的显示驱动模型成为了最大的绊脚石。于是,全新的Windows显示驱动模型WDDM便诞生了。
对于WDDM,这里仅简要介绍一下:
WDDM是全新的显示驱动架构,它是图形处理器(GPU)和视频内存(显存)的最终所有者,负责显存的管理和GPU资源的调度。
WDDM实现了操作系统和图形卡GPU之间更复杂的资源分配和调度工作,其中一个强大功能就是“虚拟化视频内存”。
视频内存的虚拟化,意味着可以用系统内存来作为显存来使用。说到这里,你可能会马上想到ATI显卡的HyperMemory技术和Nvidia显卡的TurboCache技术。从效果上是有点像,但又有所不同。
WDDM的视频内存虚拟化,使得显存用完了,可以自动使用系统内存作为显存使用,系统内存也用完了,可以用虚拟内存(当然,这种情况很少会出现)。通过WDDM,视频内存的资源能得到更好的管理和分配。
以前几乎不可能稳定地运行多个三维应用程序;也很容易会出现一个DirectX 应用程序耗尽其他应用程序的资源的情况。使用WDDM之后,这种情况将很难发生。
小提示:
WDDM还针对显示器驱动程序挂起的情形提供了容错措施。这样使得系统能够在检测到系统挂起后再次重启显示器驱动程序,而无需重启系统。
小提示:
WDDM除了解决了DWM技术所产生的问题之外,还为系统提供了非常高的健壮性和可靠性。当然,其他的3D程序都能从中获益。
Aero基于DWM,而DWM又基于WDDM。在提供华丽外表的同时,Aero界面与很多强大的技术基础紧密相连,给我们带来了很多实实在在的好处。
掌控桌面窗口管理器
现在,大家都已经对Aero界面有了很清晰的了解。我们再来看看如何更好地掌控Aero,也就是桌面窗口管理器(DWM)。
在任务管理器里看到dwm.exe这个进程了吗?对,这个就是桌面窗口管理器的进程。不过,禁用Aero(关闭DWM)可不是直接在任务管理器结束这个进程哦。
正确的方法应该是:
按下Win+R组合键,调出“运行”,输入“Services.msc”(不含引号),回车后,打开了“服务”。然后找出“Desktop Window Manager Session Manager”这个服务(如图8),在工具栏上有几个操控按钮分别可以对这个服务执行“启动”、“停止”、“重启”这些操作,你可以在这里通过“停止”来随时禁用Aero界面(注意:关闭Aero界面意味着关闭桌面合成,桌面渲染方式会退回到传统的渲染方式),重新开启只需再次启动这个服务。
有时候某些程序因为不兼容Aero界面而在运行的时候自动禁用了Aero,可是,当关闭程序之后,可能会出现Aero界面无法自动恢复的问题。重启Windows吗?不必!在“服务”那里用“重启服务”来重新启动DWM即可。
图8
有些不兼容Aero界面的程序未必会在启动的时候能够让Windows判断出要自动关闭Aero,这个时候,我们可以通过“兼容性”设置来为这些程序设置一下:
鼠标右击主程序文件或者其快捷方式,转到“兼容性”标签页,勾选“禁用桌面元素”(如图9)并确定保存设置即可(这个选项的英文原文是“Disable desktop composition”,也就是“禁用桌面合成”,不得不说,中文版实在翻译得不太好……)。
图9
Windows 7的改进与硬件要求
关于Windows 7相对于WindowsVista在Aero方面的改进,这里仅略微简述一下。
WDDM 1.1——更完善的显示驱动模型
基于种种原因,在Vista里,Aero的实现使得在GDI的图形处理方面没有了硬件加速特性。由于很多应用程序仍然使用GDI图形引擎来进行图形渲染,用户因此感觉到Vista运行某些应用程序比XP慢。
Windows 7里全新的WDDM 1.1(Vista是WDDM 1.0)驱动模型对此作出了改进,GDI渲染重新获得了硬件加速特性,大部分的窗口操作会变得比Vista更流畅。
顺带说一下,在2D和文字的渲染方面,Windows7新增了名为Direct2D和DirectWrite的技术来取代老旧的GDI引擎(Vista用户可以通过补丁升级获得这2个特性),这2个技术都能通过GPU加速来获得更快速的渲染性能以及更高的渲染质量。不过现在还没什么应用程序使用了这2个技术,目前正在开发的IE9以及Firefox 3.7都使用了这2个技术来渲染网页,以最近公布的IE9平台预览版来看,渲染效果确实相当棒(本文帖到这个Blog的时候,IE9正式版以及Firefox 4正式版都发布了很久了。。。)。
WDDM 1.1在GPU资源的调度方面相比Vista的WDDM 1.0也做得更好。
更省内存的DWM
这里就不细说了,改进后的DWM内存占用比Vista更少。即使你打开很多窗口,内存的使用量也不会明显增加。
远程桌面支持Aero
远程桌面,是从XP开始新增的远程控制工具。而Windows7内置的远程桌面借着全新的远程桌面协议(RDP)使得远程桌面控制也支持Aero效果。不过对方(被控制的那方)的系统也必须是Windows 7或者是Windows Server 2008 R2。
实质上,远程桌面的Aero效果的实现是在本机上实现的,也就是说,用你自己的机器来进行Aero效果的渲染。
开启远程桌面Aero支持的方法:
运行远程桌面,点击“选项”,转到“体验”标签页,勾选“桌面布局”即可(这个选项的英文原文是“Desktop Composition”,也就是“桌面合成”,果然翻译为中文后功能就是难找啊……)。
硬件要求
Windows 7的改进以及新特性离不开新硬件的技术。WDDM 1.1、Direct2D和DirectWrite都需要DirectX 10.1的显卡。使用DirectX 9.0c显卡的用户只能在Win7下安装Vista的WDDM 1.0驱动程序,Aero界面仍然可以正常使用。不过对于某些特性(比如Direct2D和DirectWrite),就只能用名为10Level9的软件层来完成,也就是用CPU来运算。性能方面肯定大打折扣,所以最好搭载一块DirectX 10以上的显卡。
几点误区
误点1:Linux的beryl、compiz或compiz fusion比Aero更强
很多Linux Fans都认为Linux里的beryl、compiz或compiz fusion比Aero强多了,并以这些组件的效果到处炫耀。作为Windows Fans,我不得不站出来为Aero说句话。
首先,我想说明一点,这些组件的实现原理其实都跟Aero差不多。其实就是抄袭了Aero。证据我多的是(时间、证物),限于篇幅,我就不废话了。(这里我要更正一下,看过国外网友的一些讨论发现,貌似Mac OSX的Aqua其实就已经应用了桌面合成技术了,所以其实最早使用这种技术的应该是Mac系统了,不过这种技术也不能随便使用的,只是当时的苹果机的硬件都很强,所以应用得比较早)
谁先谁后都不是这个误区里最关键的问题,关键是,人们过于以表面去判断事物了。我在前面说了,DWM是使用DirectX来渲染的。这意味着很多很酷很炫的特效都可以轻松实现,但操作系统终究是要来用的,不是要来玩的,没有实用性的特效,再酷也无用。
很多用户都被Linux那些好玩的特效给蒙蔽双眼了,这些组件能做的,其实Aero也能实现。奇怪的是,貌似没有人说Linux这些特效华而不实,可能是因为这些特效太好玩了……
如果你喜欢类似Mac系统的窗口切换方式,那么可以通过安装Switcher这个软件获得类似效果。下载地址:http://insentient.net/Files/Projects/Switcher/Switcher-2.0.0.2705.msi
这是为Vista设计的软件,经试验,同样适用于Win7。软件提供了3种窗口排列方式,还可以通过搜索来快速找到窗口。
误点 2:在XP下使用WindowBlinds之类的软件可以获得跟Aero同等效果
使用WindowBlinds可以在XP下模拟Aero的玻璃界面(其实单从效果上就已经相差很远了),不少人认为这样获得的效果跟真正的Aero没什么两样。实际上,没有桌面合成技术这个基础,搞这种界面效果才是真正的华而不实。
误点3:用某些视频播放软件也可以在XP下实现梦幻桌面
很早以前,某些视频播放软件就支持在桌面上播放视频。而Vista的梦幻桌面说白了也只是在桌面上播放视频。因而很多人认为梦幻桌面其实不新鲜,而且XP也能实现。
而事实上,没有桌面合成技术,梦幻桌面并不“梦幻”,XP下的“实现”相当于自虐……
小秘密:
最后来个小秘密。Office2007左上角的圆形按钮有一部分能够放在了标题栏上你是不是觉得很神奇?Chrome浏览器将标签栏放在标题栏上你是不是觉得很新颖?因为标题栏从来都不能放东西上去啊。那如果我告诉你这其实不是真正的标题栏呢?
事实就是这样。准确点说,这些标题栏都不是标准的标题栏,这是Aero界面提供的新特性。只有开启Aero才支持的,所以关闭Aero之后或者你使用的是XP,你会发现Office 2007和Chrome的标题栏都套上了皮肤。套上皮肤不是为了使界面风格统一,而是为了掩饰。因为这个时候,实际上他们都是没有真正的标题栏的,必须用皮肤伪装成标题栏。