百科问答小站 logo
百科问答小站 font logo



Windows 7 为什么可以挽救 Vista 的颓势?仅仅是因为改变了界面吗? 第1页

  

user avatar   minmin.gong 网友的相关建议: 
      

很多人提到了硬件的更新,自然而然7就比Vista顺。其实不完全是那样的。虽然Vista的最低要求比7低,但如果同样是在符合7的要求的机器上,7也比Vista流畅。而vista自己也其实要到推荐要求的机器上,才能算可用。

就拿图形系统做个例子吧。

限于当年的软硬件水平,Vista的图形部分要求所有要显示的内容都可能有2份,一份在主存,一份在显存。GDI这样软件渲染的部分,画到主存里,同步到显存。GPU渲染的部分,画到显存里,但有可能会被同步回内存。这样一来,空间和时间都浪费了。而且WDDM 1.0是没有Blt的,GDI完全无法硬件加速。只能硬生生在CPU端拷贝数据。但真正dwm做混合,很多都是发生在主存。结果就是,如果你有个D3D/OpenGL的窗口,上面叠加一个GDI控件,就会闪烁。Maya就深受其害。

到了7,只需要保留显存一份。GDI画到内存后,立刻可以通过Blt传到显存。混合都在GPU端进行。这样首先是减少了空间的消耗,第二是09年的硬件和驱动,搞这些事情完全没问题。这样的改进,可以在程序完全不知情的情况下完成。结果就是同一个程序跑快了。

DWM本身,也有个大区别。Vista的dwm用的是D3D9的接口,7的用的是D3D11。在API上的效率就提升了,混合部分的开销减少。

再说Aero。看起来几乎一样的效果,其实在Vista和7里实现也不同。Vista用的是D3D9的StretchRect,拷贝到半分辨率的一张纹理里面,横竖blur,再加上前景颜色画到屏幕。7用的是D3D11,已经没有StretchRect了,也不能拷贝到不同分辨率的纹理,但back buffer也可以作为纹理读取。结果就变成了直接从back buffer做横向blur到一个横向只有一半的纹理上,再做一次纵向blur到半分辨率的纹理。在早期的硬件上,7的做法会比较慢。因为你在shader里第一次读取的是全分辨率的。到后来就已经没区别了。

就是这些细节上的改进,让7相对Vista有着效率上的巨大优势。但因为整体风格变化不大,老用户可以习惯地接受。这才挽救了颓势。




  

相关话题

  如何评价华为开发自主产权操作系统「鸿蒙」曝光? 
  如何看待腾讯云正式对外公布分布式云战略,发布云原生操作系统遨驰 Orca ,会给业界带来哪些影响? 
  会不会有两个中断绝对同时发出,cpu会如何处理? 
  除了 Windows,macOS,类 Unix 之外还有别的选择么? 
  为什么会有人谴责微软捆绑 IE,如果 Windows 没有内置 IE,那么你拿到电脑应该怎么上网下载别的浏览器? 
  为什么有相当一部分人都不愿意打开微软的自动更新? 
  为什么没有国产 Windows 的诞生? 
  通过 Bochs 让高性能的 Android 手机流畅运行 Windows 虚拟机是否可行? 
  为何有不少人认为用中文编程需要先自研硬件或操作系统? 
  为什么我的电脑还没有被推送win11? 

前一个讨论
如何评价《神探夏洛克》(Sherlock)第四季第一集 The Six Thatchers?
下一个讨论
为什么知乎大神都很高冷,邀请了都不回应?





© 2024-11-24 - tinynew.org. All Rights Reserved.
© 2024-11-24 - tinynew.org. 保留所有权利