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

智能推荐

计算带余除法(四种方法)_带余除法怎么写编程-程序员宅基地

文章浏览阅读387次,点赞12次,收藏4次。给定两个整数a和b (0 < a,b < 10,000),计算a除以b的整数商和余数。一行,包括两个整数a和b,依次为被除数和除数(不为零),中间用空格隔开。一行,包含两个整数,依次为整数商和余数,中间用一个空格隔开。示例:输入:15 2,输出:7 1_带余除法怎么写编程

【Maven教程】(九):使用 Maven 进行测试——动态指定要运行的测试用例、包含与排除测试用例、测试报告、运行TestNG测试、重用测试代码 ~_maven和testng怎么用-程序员宅基地

文章浏览阅读1.7k次,点赞2次,收藏3次。本文的主题是Maven与测试的集成,不过在讲述具体的测试技巧之前先实现了背景案例的account-captcha模块,这一模块的测试代码也成了本章其他内容良好的素材。maven-surefire-plugin是Maven背后真正执行测试的插件,它有一组默认的文件名模式来匹配并自动运行测试类。用户还可以使用该插件来跳过测试、动态执行测试类、包含或排除测试等。maven-surefire-plugin能生成基本的测试报告,除此之外还能使用cobertura-maven-plugin生成测试覆盖率报告。_maven和testng怎么用

DataGridView列头checkbox-程序员宅基地

文章浏览阅读4.6k次。using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Dat_datagridview列头

Python3 错误和异常_assertionerror怎么解决python-程序员宅基地

文章浏览阅读927次,点赞2次,收藏2次。Python3 错误和异常_assertionerror怎么解决python

Sharding-JDBC 1.5.0.M1 正式发布,全新的 SQL 解析引擎-程序员宅基地

文章浏览阅读109次。经过了长达几个月的紧张开发,Sharding-JDBC 1.5.0.M1终于正式发布。Sharding-JDBC 1.5.0.M1版本是一次里程碑式升级,工作量巨大,Sharding-JDBC截止到1.4.2之前所有的提交次数为385次,而1.5.0.M1一个版本的提交次数为517次。Sharding-JDBC从这个版本开始明确定位为“水平扩展以及in..._sharding-jdbc 1.5 解析器

golang检测网页编码_go 识别网页编码-程序员宅基地

文章浏览阅读876次。很简单直接上代码package mainimport ( "fmt" "io/ioutil" "net/http" "unicode/utf8")func main() { resp, _ := http.Get(`https://www.baidu.com/`) data, _ := ioutil.ReadAll(resp.Body) defer resp.Body.Close() fmt.Println(utf8.Valid(data)) // ture代表即utf8,否则你_go 识别网页编码

随便推点

【论文翻译】HCGN:面向集体分类的异构图卷积网络深度学习模型_hgcn-程序员宅基地

文章浏览阅读1.8k次。HCGN:面向集体分类的异构图卷积网络深度学习模型摘要集合分类是研究网络数据的一项重要技术,旨在利用一组具有复杂依赖关系的互联实体的标签自相关性。随着各种异构信息网络的出现,集合分类目前正面临着来自异构信息网络的严峻挑战,如复杂的关系层次、潜在的不相容语义和节点上下文关系语义。为了应对这些挑战,本文提出了一种新的基于异构图卷积网络的深度学习模型,称之为HGCN,用于对HINs中的实体进行集体分类。我们的工作包括三个主要贡献:1)HGCN不仅通过多层异构卷积从关系复杂的HINs中学习潜在的关系,而且用适当_hgcn

java的重写_java 类的重写-程序员宅基地

文章浏览阅读211次。java的重写重写的一般用法方法重写的具体要求文章内容选自尚硅谷重写的一般用法java的重写是为了子类在继承父类方法的时候,需要用到父类的方法,但是方法体又和父类不完全一样,因此得在子类中创建一个和父类同名同参数的方法,实现方法的重写。方法的重写(override或overwrite)必须和父类同名,参数列表也相同重写后当子类调用父类的方法的时候,调用的是子类中重写的方法,而不是父类的方法。代码如下,创建一个Person类package com.atguigui.java;public_java 类的重写

Oracle学习笔记 1 ---Oracle概述和安装配置_oracle笔记1 1. oracle概述-程序员宅基地

文章浏览阅读793次。一、Oracle概述_oracle笔记1 1. oracle概述

基于matlab的一元线性回归原理_基于matlab栅格数据一元线性回归-程序员宅基地

文章浏览阅读3.6k次,点赞3次,收藏27次。一元线性回归分析是在排除其他影响因素,分析某一个因素(自变量:X)是如何影响另外一个事物(因变量:Y)的过程,所进行的分析是比较理想化的。对于一元线性回归来说,可以看成Y的值是随着X的值变化,每一个实际的X都会有一个实际的Y值,我们叫Y实际,那么我们就是要求出一条直线,每一个实际的X都会有一个直线预测的Y值,我们叫做Y预测,回归线使得每个Y的实际值与预测值之差得平方和最小。_基于matlab栅格数据一元线性回归

vue 百度地图/天地图设置铺满屏幕100%,解决空隙问题_vue百度地图 100vw宽度不生效-程序员宅基地

文章浏览阅读491次。vue 百度地图/天地图设置铺满屏幕100%,解决空隙问题_vue百度地图 100vw宽度不生效

所有服务器用户使用同一个conda_怎么让服务器各个节点指向同一个anaconda-程序员宅基地

文章浏览阅读1.4k次。需求:现在有一台服务器,需要所有新建的用户都能在登陆后,直接使用指定的conda,不需要其他的任何配置。尝试:方法一:.(source) ~/anaconda3/bin/activate可行,无需管理员权限,但需每进入一次terminal都需输入一次。方法二:echo 'export PATH="~/anaconda3/bin:$PATH"' >> ~/.bashrc source ~/.bashrc可行,无需管理员权限,但需每进入一次terminal都需输入一次。方法三:_怎么让服务器各个节点指向同一个anaconda

推荐文章

热门文章

相关标签