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




  

相关话题

  关于malloc返回值的问题? 
  Windows11与鸿蒙谁会赢得未来主要市场?2 万亿市值的微软,我们还能期待什么? 
  互联网公司,要求开发人员统一操作系统和开发工具,这可能是基于什么想法? 
  为什么微软的软件安装都如此麻烦? 
  64位操作系统,64位CPU,加SSD硬盘,是不是就可以省去内存,让CPU直接读取硬盘里的数据? 
  为什么大家习惯于把任务栏置于底部,而不是左侧、右侧或顶部? 
  网上说NTFS是日志式文件系统,会极大缩短内存卡、U盘等存储设备的寿命,是真的吗? 
  为什么微软不把Windows老版本系统开源? 
  windows为什么不添加图形界面的定时关机功能? 
  如何看待腾讯云正式对外公布分布式云战略,发布云原生操作系统遨驰 Orca ,会给业界带来哪些影响? 

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





© 2024-05-20 - tinynew.org. All Rights Reserved.
© 2024-05-20 - tinynew.org. 保留所有权利