传统的Windows图形处理
在Vista之前,图形子系统内核部分win32k.sys 通过DDI接口操作显示驱动, 显示驱动通过ENG接口调用win32k.sys.
From: Windows 2000 显示体系结构
显示驱动程序的作用
不同显示驱动程序负责对于不同显示设备的优化。GDI仅负责标准位图格式的绘制操作,当显示硬件支援高效绘制时,可以挂钩并优先于内核GDI完成绘制,由此达到加速。
From: Windows 2000 显示驱动程序的责任 挂钩与转移
从NT4开始, 图形管理和GDI移至内核
为了提高图形显示效率,移至内核并没有增加内核不稳定性。
参考: MS Windows NT Kernel-mode User and GDI White Paper
Linux发行版的图形界面
Linux生态太注重内核和开源,没有商业公司愿意花钱专心优化桌面,做出来的系统不能明目张胆收费。这造成了看着如此"伟大"的技术无法让普通用户感受桌面的"亲近"。无解又无奈!不是对手太强大,是对手在内耗...
对于Linux, 它有其优势,如何平衡优秀的用户体验和太过钻牛角尖的"技术/版权"争端将决定Linux未来的桌面是否真的能有所建树。
DirectX/Direct3D
为了更高效操作显示器硬件,可以不透过GDI API接口,通过DirectXX接口直接操作显示器硬件,达到更流畅。
Vista开始增加DWM进程
DWM(Desktop Window Manager)和以往的绘制最大的差异是屏幕绘制不再是各个App单独决定的,而是在额外的"后台视频存储区缓冲区"绘制之后再渲染。Aero效果、立体和翻转效果等都得益于DWM.
From: 桌面窗口管理器
DWM的优势如下:
- 重新绘制消息更少。 当窗口被另一个窗口阻塞时,阻塞的窗口不需要重新绘制自身。
- 减少了拖拽。 (没采用DWM时,拖动窗口可能会产生视觉停留)
- 视觉效果。 由于 DWM 负责组合屏幕,因此它可以呈现窗口的半透明和模糊区域。
- 高 DPI 的自动缩放。 尽管缩放不是处理高 DPI 的理想方法,但对于未针对高 DPI 设置设计的较旧应用程序,这是一种可行的回退。
- 备用视图。 DWM 可以通过各种有趣的方式使用屏幕外表面。 例如,DWM 是Windows翻转 3D、缩略图和动画转换背后的技术。