百科问答小站 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有着效率上的巨大优势。但因为整体风格变化不大,老用户可以习惯地接受。这才挽救了颓势。




  

相关话题

  MFC真的过时了吗? 
  如何看待王垠对于内存管理的理解? 
  如何看待华为将于 6 月 2 日举办鸿蒙发布会?你对此有哪些期待? 
  音频程序是如何在现代操作系统抢占式时间分片机制下持续输出信号的? 
  为什么会有许多人认为C盘太满会影响电脑运行速度? 
  为什么 Windows XP 会有上海政府版,这其中有什么历史? 
  为何中国有相当一部分 Windows 用户不愿意用 Windows 10? 
  如何看待开源中国中一片唱衰鸿蒙 OS? 
  如何评价UOS统一操作系统? 
  为什么各大手机厂商不积极适配鸿蒙系统? 

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





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