桌面窗口管理器:修订间差异
跳转到导航
跳转到搜索
→Desktop Window Manager
正义羊-JRJSheep(讨论 | 贡献) |
正义羊-JRJSheep(讨论 | 贡献) |
||
| 第 13 行: | 第 13 行: | ||
在整个 Milestone 5 中,已知 Lab06 版本(例如在 WinHEC 2003 上使用 DCE 演示的 [[Windows Longhorn Build 4015.0.Lab06_n.030403-1706|Build 4015]])和 [[Windows Longhorn Build 4018.0.Lab06_n.030417-1721|Build 4018]] 具有额外的DCE效果,包括图形动画和拖动时摆动的窗口。尽管有这些动画,其他实验室只使用窗口透明度效果。同样在 Milestone 5 期间,桌面合成引擎进行了重新设计,以启用半透明的 DCE 窗口框架。但是,Build 4029 到 4033 在 DCE 中存在 bug,导致它无法启用 Direct3D 着色器(DCE 窗口框架所依赖)。此 bug 直到 [[Windows Longhorn Build 4038.0.main.030813-1852|Build 4038]] 才得到修复,这是首个具有有效渲染 DCE 窗口框架的 M6 版本。 | 在整个 Milestone 5 中,已知 Lab06 版本(例如在 WinHEC 2003 上使用 DCE 演示的 [[Windows Longhorn Build 4015.0.Lab06_n.030403-1706|Build 4015]])和 [[Windows Longhorn Build 4018.0.Lab06_n.030417-1721|Build 4018]] 具有额外的DCE效果,包括图形动画和拖动时摆动的窗口。尽管有这些动画,其他实验室只使用窗口透明度效果。同样在 Milestone 5 期间,桌面合成引擎进行了重新设计,以启用半透明的 DCE 窗口框架。但是,Build 4029 到 4033 在 DCE 中存在 bug,导致它无法启用 Direct3D 着色器(DCE 窗口框架所依赖)。此 bug 直到 [[Windows Longhorn Build 4038.0.main.030813-1852|Build 4038]] 才得到修复,这是首个具有有效渲染 DCE 窗口框架的 M6 版本。 | ||
=== | === 桌面窗口管理器 === | ||
最初的合成引擎在 Longhorn 项目的 Milestone 7 中继续开发。对于 [[Windows Longhorn Build 4088.0.Lab02_N.040706-1655|Build 4088]] 至 [[Windows Longhorn Build 4093|Build 4093]],它将会使用旨在作为服务运行的 .NET 托管代码大量重写,这也允许软件渲染在标准 VGA 驱动程序上运行。 | |||
在重置 Longhorn 的开发后,从重置前版本中使用的桌面窗口管理器被废弃,取而代之的是新的、更稳定的本机实现,现在可以真正按预期呈现 Aero 主题。在开发早期就放弃了对允许桌面窗口管理器在 XDDM 驱动程序上运行的支持,从 [[Windows Vista Build 5098.0.winmain_beta1.050628-1740|Build 5098]] 开始的版本只允许在安装了支持的 LDDM/WDDM 驱动程序时运行 DWM。 | |||
DWM | DWM 需要 Direct3D 9Ex 和 Pixel Shader 2.0 才能运行。基于 GDI 的应用程序使用 Canonical 显示驱动程序渲染到纹理,而基于 WPF 的应用程序(使用相同的非托管合成器渲染)实际上可以成为合成树的一部分,直到更新使 .NET Framework 与 Windows Vista 不同步。Direct3D 应用程序呈现到由 DWM 合成的纹理的图面。 | ||
从 Windows 7 开始,DWM 使用 Direct3D 10.1(如果可用)来提高性能,且 WDDM 1.1 再次支持某些 GDI 硬件加速。在 [[Windows 8]] 中,桌面窗口管理器现在始终为[[“开始”屏幕]]界面运行,在正常情况下无法禁用。此外,桌面窗口管理器的效果能够从 [[Windows 8 Build 7880.0.fbl_grfx_dev1.101110-1700|Build 7880]] 开始通过软件呈现,而非依赖硬件加速。 | |||
==Enabling the Desktop Compositing Engine== | ==Enabling the Desktop Compositing Engine== | ||