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

智能推荐

linux devkmem 源码,linux dev/mem dev/kmem实现访问物理/虚拟内存-程序员宅基地

文章浏览阅读451次。dev/mem: 物理内存的全镜像。可以用来访问物理内存。/dev/kmem: kernel看到的虚拟内存的全镜像。可以用来访问kernel的内容。调试嵌入式Linux内核时,可能需要查看某个内核变量的值。/dev/kmem正好提供了访问内核虚拟内存的途径。现在的内核大都默认禁用了/dev/kmem,打开的方法是在 make menuconfig中选中 device drivers --> ..._dev/mem 源码实现

vxe-table 小众但功能齐全的vue表格组件-程序员宅基地

文章浏览阅读7.1k次,点赞2次,收藏19次。vxe-table,一个小众但功能齐全并支持excel操作的vue表格组件_vxe-table

(开发)bable - es6转码-程序员宅基地

文章浏览阅读62次。参考:http://www.ruanyifeng.com/blog/2016/01/babel.htmlBabelBabel是一个广泛使用的转码器,可以将ES6代码转为ES5代码,从而在现有环境执行// 转码前input.map(item => item + 1);// 转码后input.map(function (item) { return item..._让开发环境支持bable

FPGA 视频处理 FIFO 的典型应用_fpga 频分复用 视频-程序员宅基地

文章浏览阅读2.8k次,点赞6次,收藏29次。摘要:FPGA视频处理FIFO的典型应用,视频输入FIFO的作用,视频输出FIFO的作用,视频数据跨时钟域FIFO,视频缩放FIFO的作用_fpga 频分复用 视频

R语言:设置工作路径为当前文件存储路径_r语言设置工作目录到目标文件夹-程序员宅基地

文章浏览阅读575次。【代码】R语言:设置工作路径为当前文件存储路径。_r语言设置工作目录到目标文件夹

background 线性渐变-程序员宅基地

文章浏览阅读452次。格式:background: linear-gradient(direction, color-stop1, color-stop2, ...);<linear-gradient> = linear-gradient([ [ <angle> | to <side-or-corner>] ,]? &l..._background线性渐变

随便推点

【蓝桥杯省赛真题39】python输出最大的数 中小学青少年组蓝桥杯比赛 算法思维python编程省赛真题解析-程序员宅基地

文章浏览阅读1k次,点赞26次,收藏8次。第十三届蓝桥杯青少年组python编程省赛真题一、题目要求(注:input()输入函数的括号中不允许添加任何信息)1、编程实现给定一个正整数N,输出正整数N中各数位最大的那个数字。例如:N=132,则输出3。2、输入输出输入描述:只有一行,输入一个正整数N输出描述:只有一行,输出正整数N中各数位最大的那个数字输入样例:

网络协议的三要素-程序员宅基地

文章浏览阅读2.2k次。一个网络协议主要由以下三个要素组成:1.语法数据与控制信息的结构或格式,包括数据的组织方式、编码方式、信号电平的表示方式等。2.语义即需要发出何种控制信息,完成何种动作,以及做出何种应答,以实现数据交换的协调和差错处理。3.时序即事件实现顺序的详细说明,以实现速率匹配和排序。不完整理解:语法表示长什么样,语义表示能干什么,时序表示排序。转载于:https://blog.51cto.com/98..._网络协议三要素csdn

The Log: What every software engineer should know about real-time data's unifying abstraction-程序员宅基地

文章浏览阅读153次。主要的思想,将所有的系统都可以看作两部分,真正的数据log系统和各种各样的query engine所有的一致性由log系统来保证,其他各种query engine不需要考虑一致性,安全性,只需要不停的从log系统来同步数据,如果数据丢失或crash可以从log系统replay来恢复可以看出kafka系统在linkedin中的重要地位,不光是d..._the log: what every software engineer should know about real-time data's uni

《伟大是熬出来的》冯仑与年轻人闲话人生之一-程序员宅基地

文章浏览阅读746次。伟大是熬出来的  目录  前言  引言 时间熬成伟大:领导者要像狼一样坚忍   第一章 内圣外王——领导者的心态修炼  1. 天纵英才的自信心  2. 上天揽月的企图心  3. 誓不回头的决心  4. 宠辱不惊的平常心  5. 换位思考的同理心  6. 激情四射的热心  第二章 日清日高——领导者的高效能修炼  7. 积极主动,想到做到  8. 合理掌控自己的时间和生命  9. 制定目标,马..._当狼拖着受伤的右腿逃生时,右腿会成为前进的阻碍,它会毫不犹豫撕咬断自己的腿, 以

有源光缆AOC知识百科汇总-程序员宅基地

文章浏览阅读285次。在当今的大数据时代,人们对高速度和高带宽的需求越来越大,迫切希望有一种新型产品来作为高性能计算和数据中心的主要传输媒质,所以有源光缆(AOC)在这种环境下诞生了。有源光缆究竟是什么呢?应用在哪些领域,有什么优势呢?易天将为您解答!有源光缆(Active Optical Cables,简称AOC)是两端装有光收发器件的光纤线缆,主要构成部件分为光路和电路两部分。作为一种高性能计..._aoc 光缆

浏览器代理服务器自动配置脚本设置方法-程序员宅基地

文章浏览阅读2.2k次。在“桌面”上按快捷键“Ctrl+R”,调出“运行”窗口。接着,在“打开”后的输入框中输入“Gpedit.msc”。并按“确定”按钮。如下图 找到“用户配置”下的“Windows设置”下的“Internet Explorer 维护”的“连接”,双击选择“自动浏览器配置”。如下图 选择“自动启动配置”,并在下面的“自动代理URL”中填写相应的PAC文件地址。如下..._設置proxy腳本