windows7的aero的介绍-程序员宅基地

技术标签: 操作系统  

 今天晚上看了个关于aero的介绍,感觉还不错,挺详细的,转载之,以备记录

前言:    

   微软Windows Vista系统由于生不逢时而惹来了很多不好的名声,很多人更是人云亦云,并仅从其表面主观判断这个系统的好坏,因而出现了很多持有“Aero无用”或“Aero华而不实”之类的观点的人。
  对于全新推出的Windows 7操作系统,由于有Vista打下的基础(硬件驱动以及软件的成熟),加上微软在Win7上付出的努力,这个新一代的操作系统获得了不错的反响。大家都逐渐愿意去关注她,拥抱她。正好给了我一个机会为Aero平反。
  本文将简述Aero的基本工作原理来讲述Aero除了给我们带来华丽的界面之外还给我们带来什么样的好处,并让大家对Windows 7有更多的了解。评价一样事物,不应只看其表面,更应该看清楚它的“心”。

正文:

1、传统桌面渲染模式的缺陷

下图的现象相信你非常熟悉:


                                                      图1

为什么会这样?要解析清楚这个,我们就需要了解一下传统的Windows桌面渲染原理。

在Windows Vista之前,Windows只有一个桌面缓存,并且所有的程序窗口都直接在那个缓存上进行渲染
这样说或许比较抽象,用个比较形象的说法就是,你所看到的整个屏幕上的画面就相当于一张画在一张纸上的画。对,就是只有一张纸。
这样造成的结果是什么呢?我们再来看。

图2有2个计算器窗口,其中一个被另一个覆盖了一部分窗口内容。而被覆盖的那个计算器的窗口内容,实际上就只有看得见的那部分(参见图3)。



                          图2                                                                            图3

这是因为所有窗口都只在一个缓存上直接渲染(绘图)的关系。试想一下,一张纸上的内容,除了你所能够看到的那些部分之外,还会有什么?
所以当我们移动上面的那个计算器窗口的时候,下面那个计算器的窗口就要重绘,整个画面都需要重绘。
而当我们在另一个应用程序上快速来回移动窗口时,由于下面的窗口更新速度太慢,没能及时重绘窗口,从而形成了图1的那种撕裂现象。与此同时,CPU占用率也会变得很高。并且最终的桌面渲染是由GDI和GDI+图形引擎来渲染的,在高分辨率的情况下,渲染出来的画面也不够细腻。

传统的桌面渲染由于存在撕裂现象、画面不流畅、CPU占用率高和画面粗糙这些问题,显然不能适应未来的发展,而且所有的这些缺陷在高DPI的显示器下会变得更明显。

2、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 Flip 3D
5. 高分辨率支持
DWM技术为高分辨率显示器提供更好的支持,而且对于120DPI以上的显示器,画面也依然平滑流畅、细腻。

上面提到,DWM使用DirectX来渲染桌面。所以开启Aero之后,我们的桌面就相当于一个全屏幕的Direct3D应用程序。只不过我们玩的不是游戏,而是窗口。:-)
3D桌面因此而得名。很多人误解了,以为Aero之所以叫3D桌面是因为图6那个3D效果。错了,其实这是因为Aero使用3D技术来渲染才叫3D桌面的。(跟朋友交流过后,觉得有必要补充一下这点)

小提示: 
常用的游戏帧速监控软件Fraps,除了能够监控3D游戏的帧速之外,还可以监控Aero界面的帧速哦。运行Fraps之后,勾选“MonitorAero Desktop(DWM)”(如图7),OK



                                                图7


3、全新的显示驱动模型——WDDM

说到这里,不得不提一下WDDM(Windows Display Driver Model,Windows显示驱动模型)。
由于DWM使用DirectX来渲染桌面, DWM会与其它的应用程序共享视频内存资源,比如DirectX应用程序、视频回放。这样会产生一系列的问题,旧的显示驱动模型成为了最大的绊脚石。于是,全新的Windows显示驱动模型WDDM便诞生了。
对于WDDM,这里仅简要介绍一下:
WDDM是全新的显示驱动架构,它是图形处理器(GPU)和视频内存(显存)的最终所有者,负责显存的管理和GPU资源的调度。
WDDM实现了操作系统和图形卡GPU之间更复杂的资源分配和调度工作,其中一个强大功能就是“虚拟化视频内存”。
视频内存的虚拟化,意味着可以用系统内存来作为显存来使用。说到这里,你可能会马上想到ATI显卡的HyperMemory技术和Nvidia显卡的TurboCache技术。从效果上是有点像,但又有所不同。
WDDM的视频内存虚拟化,使得显存用完了,可以自动使用系统内存作为显存使用,系统内存也用完了,可以用虚拟内存(当然,这种情况很少会出现)。通过WDDM,视频内存的资源能得到更好的管理和分配。
以前几乎不可能稳定地运行多个三维应用程序;也很容易会出现一个DirectX 应用程序耗尽其他应用程序的资源的情况。使用WDDM之后,这种情况将很难发生。

小提示: 
1、很多人都习惯通过dxdiag.exe来查看显卡的显存大小。可是,在Vista/Win7下,你却看到它显示的显存大小竟然远远超出显卡的实际显存大小。比如我的移动版ATI x1300显卡,明明只有64MB显存,却显示有1534MB显存。是系统问题吗?
相信聪明的你看到这里已经明白这是谁的“杰作”了。对!就是WDDM。

WDDM还针对显示器驱动程序挂起的情形提供了容错措施。这样使得系统能够在检测到系统挂起后再次重启显示器驱动程序,而无需重启系统。

 2、试过在Vista/Win7下屏幕出现短暂黑屏,然后任务栏右下角提示“显示器驱动程序已停止响应,并且已成功恢复”的情况吗?
这种情况一般是显卡驱动问题。重要的是,这种情况表明WDDM的可靠性设计可以很好地发挥作用,如果是XP出现类似情况的话,估计早就崩溃了。

WDDM除了解决了DWM技术所产生的问题之外,还为系统提供了非常高的健壮性和可靠性。当然,其他的3D程序都能从中获益。

Aero基于DWM,而DWM又基于WDDM。在提供华丽外表的同时,Aero界面与很多强大的技术基础紧密相连,给我们带来了很多实实在在的好处。

4、掌控桌面窗口管理器

现在,大家都已经对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

5、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平台预览版来看,渲染效果确实相当棒。
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。证据我多的是(时间、证物),限于篇幅,我就不废话了。
谁先谁后都不是这个误区里最关键的问题,关键是,人们过于以表面去判断事物了。我在前面说了,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的标题栏都套上了皮肤。套上皮肤不是为了使界面风格统一,而是为了掩饰。因为这个时候,实际上他们都是没有真正的标题栏的,必须用皮肤伪装成标题栏。


结语
相信大家看完本文之后都已经对Aero和Windows 7有了较深入的了解,最后希望大家谨记一点:不要单凭表面去评价事物。

 

转载于:https://www.cnblogs.com/xwj-pandababy/articles/2664127.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30342209/article/details/95695690

智能推荐

settext 下划线_Android TextView 添加下划线的几种方式-程序员宅基地

文章浏览阅读748次。总结起来大概有5种做法:将要处理的文字写到一个资源文件,如string.xml(使用html用法格式化)当文字中出现URL、E-mail、电话号码等的时候,可以将TextView的android:autoLink属性设置为相应的的值,如果是所有的类型都出来就是**android:autoLink="all",当然也可以在java代码里 做,textView01.setAutoLinkMask(Li..._qaction::settext 无法添加下划线

TableStore时序数据存储 - 架构篇_tablestore 时间类型处理-程序员宅基地

文章浏览阅读6.3k次,点赞2次,收藏10次。摘要: 背景 随着近几年物联网的发展,时序数据迎来了一个不小的爆发。从DB-Engines上近两年的数据库类型增长趋势来看,时序数据库的增长是非常迅猛的。在去年我花了比较长的时间去了解了一些开源时序数据库,写了一个系列的文章(综述、HBase系、Cassandra系、InfluxDB、Prometheus),感兴趣的可以浏览。背景随着近几年物联网的发展,时序数据迎来了一个不小的爆发。从DB..._tablestore 时间类型处理

Ubuntu20.04下成功运行VINS-mono_uabntu20.04安装vins-mono-程序员宅基地

文章浏览阅读5.7k次,点赞8次,收藏49次。可以编译成功但是运行时段错误查找原因应该是ROS noetic版本中自带的OpenCV4和VINS-mono中需要使用的OpenCV3冲突的问题。为了便于查找问题,我只先编译feature_tracker包。解决思路历程:o想着把OpenCV4相关的库移除掉,但是发现编译feature_tracker的时候仍然会关联到Opencv4的库,查找原因是因为cv_bridge是依赖opencv4的,这样导致同时使用了opencv3和opencv4,因此运行出现段错误。oo进一步想着(1)把vins-mon_uabntu20.04安装vins-mono

TMS320C6748_EMIF时钟配置_tms 6748-程序员宅基地

文章浏览阅读3.6k次,点赞3次,收藏12次。创龙TL6748开发板中,EMIFA模块使用默认的PLL0_SYSCLK3时钟,使用AISgen for D800K008工具加载C6748配置文件C6748AISgen_456M_config(Configuration files,在TL_TMS6748/images文件夹下),由图可以看到DIV3等于4,注意这里的DIV3就是实际的分频值(x),而不是写入相应PLL寄存器的值(x-1)。_tms 6748

eigen稀疏矩阵拼接(基于块操作的二维拼接)的思考-程序员宅基地

文章浏览阅读5.9k次,点赞4次,收藏13次。转载请说明出处:eigen稀疏矩阵拼接(块操作)eigen稀疏矩阵拼接(块操作)关于稀疏矩阵的块操作:参考官方链接 However, for performance reasons, writing to a sub-sparse-matrix is much more limited, and currently only contiguous sets of columns..._稀疏矩阵拼接

基于Capon和信号子空间的变形算法实现波束形成附matlab代码-程序员宅基地

文章浏览阅读946次,点赞19次,收藏19次。波束形成是天线阵列信号处理中的一项关键技术,它通过对来自不同方向的信号进行加权求和,来增强特定方向的信号并抑制其他方向的干扰。本文介绍了两种基于 Capon 和信号子空间的变形算法,即最小方差无失真响应 (MVDR) 算法和最小范数算法,用于实现波束形成。这些算法通过优化波束形成权重向量,来最小化波束形成输出的方差或范数,从而提高波束形成性能。引言波束形成在雷达、声纳、通信和医学成像等众多应用中至关重要。它可以增强目标信号,抑制干扰和噪声,提高系统性能。

随便推点

Nginx反向代理获取客户端真实IP_nginx获取到的是交换机的ip-程序员宅基地

文章浏览阅读2.2k次。一,问题 nginx反向代理后,在应用中取得的ip都是反向代理服务器的ip,取得的域名也是反向代理配置的url的域名,解决该问题,需要在nginx反向代理配置中添加一些配置信息,目的将客户端的真实ip和域名传递到应用程序中。二,解决 Nginx服务器增加转发配置 proxy_set_header Host $host;_nginx获取到的是交换机的ip

Wireshark TCP数据包跟踪 还原图片 WinHex应用_wireshark抓包还原图片-程序员宅基地

文章浏览阅读1.4k次。Wireshark TCP数据包跟踪 还原图片 WinHex简单应用 _wireshark抓包还原图片

Win8蓝屏(WHEA_UNCORRECTABLE_ERROR)-程序员宅基地

文章浏览阅读1.5k次。Win8下安装VS2012时,蓝屏,报错WHEA_UNCORRECTABLE_ERROR(P.S.新的BSOD挺有创意":("),Google之,发现[via]需要BIOS中禁用Intel C-State,有严重Bug的嫌疑哦原因有空再看看..._win8.1 whea_uncorrectable_error蓝屏代码

案例课1——科大讯飞_科大讯飞培训案例-程序员宅基地

文章浏览阅读919次,点赞21次,收藏22次。科大讯飞是一家专业从事智能语音及语音技术研究、软件及芯片产品开发、语音信息服务的软件企业,语音技术实现了人机语音交互,使人与机器之间沟通变得像人与人沟通一样简单。语音技术主要包括语音合成和语音识别两项关键技术。此外,语音技术还包括语音编码、音色转换、口语评测、语音消噪和增强等技术,有着广阔的应用。_科大讯飞培训案例

perl下载与安装教程【工具使用】-程序员宅基地

文章浏览阅读4.7k次。Perl是一个高阶程式语言,由 Larry Wall和其他许多人所写,融合了许多语言的特性。它主要是由无所不在的 C语言,其次由 sed、awk,UNIX shell 和至少十数种其他的工具和语言所演化而来。Perl对 process、档案,和文字有很强的处理、变换能力,ActivePerl是一个perl脚本解释器。其包含了包括有 Perl for Win32、Perl for ISAPI、PerlScript、Perl。_perl下载

安装VS2008 SP1-程序员宅基地

文章浏览阅读5.4k次。最近由于在学习SQL2008,所以需要使用VS2008太耍一下关于SQL2008的新特性,尤其是Entity Framework。VS2008和SQL2008我都更新成英文版了。接下来安装VS2008的Sp1补丁,MS又使用了很恶心的网络安装,下载的Sp1才450K,然后网络安装过程中就要下载几百兆的安装文件,万恶的网络安装,光下载就花了我1个多小时。接下来就开始安装了,不到1分钟,直接报错,安装_vs2008 sp1

推荐文章

热门文章

相关标签