Windows 7 的图形引擎将超越 Vista

  • Abel Avram
  • 王波

2009 年 6 月 21 日

话题:.NET语言 & 开发架构

Windows 7 图形引擎修改了 Vista 引入的 DWM 工作方式,同时它还带来了新的 API、D2D 和 DWrite、新的 Direct3D 11 并能更好的处理多路输出设备。

微软的桌面和图形小组高级架构师 David Blythe 在 Channel 9 的采访中解释了,什么是桌面窗口管理器(DWM)及其如何运作。应用程序不会直接在屏幕上绘图而是在内存的位图上进行,DWM 负责把图像绘制到屏幕。这项技术的使用是为了在图形出现在屏幕之前对其应用各种变换。这就是动画任务栏缩略图如何创建的机理或者说桌面缩放是如何运作的。

Vista 的 DWM 最大的问题是它的效率问题。直到 Vista 为止,应用程序使用 GDI 在屏幕上进行绘图,同时 GDI 使用硬件图形加速器来完成实际的工作。在 Vista 中,GDI 在内存中进行绘图,DWM 使用已绘制好的位图并用 GPU 把它绘制到屏幕上。这会导致有两份同样的图像。Windows 7 中的改进意味着 GDI 将直接在图形内存中进行绘制,这将在 GDI 中再次引入最小的硬件加速层。这项改变会极大的降低内存的消耗和让图形呈现速度加快。

两项新的 DirectX API 是 Direct2D 和 DirectWrite。根据 MSDN 的资料,Direct2D是:

硬件加速的即时模式 2 维图形 API,它在 2 维几何图形、位图和文本方面有着较高的性能和质量。Direct2D API 是设计与 GDI、GDI+ 和 Direct3D 之间进行互操作的。

DirectWrite则是:

DirectWrite 提供高质量的文本呈现、具有独立分辨率的轮廓字体、完整的 Unicode 文本以及布局支持。在使用 Direct2D 的时候,DirectWrite 是硬件加速的。

windows7-2

Windows 7 带的 Direct3D 11 是 D3D10 的超集,它还可运行在 D3D9 和 D3D10.x 硬件之上。D3D11 展现的一些新特性,如下所示:

  • 分割 - 在运行时,在底层细节的多边形模型的基础上,提升直观的多边形数量
  • 多线程呈现 - 利用多核 CPU 从不同的线程来呈现相同的 Direct3D 设备对象
  • 计算着色器 - 公开着色器管道的非图形任务,例如,流式处理和物理加速(类似于 NVIDIA 的CUDA实现的效果),包括HLSLShader Model 5

在 Vista 中运行得不太顺畅的一项特性已经在 Windows 7 中得到解决,该特性可管理多个显示器和类似于放映机的显示设备。为了处理大量的潜在输出设备配置,GDI API 进行了扩展,对于所需的输出配置可以简单地通过按 Win + P 键来进行选择。

参考链接:Windows 7 图形架构概述 第一部分、第二部分和第三部分,Windows 7:Direct2D 和 DirectWrite(PDC 演示)入门、Windows 7:用Direct3D解码GPU(PDC)

查看英文原文:Windows 7’s Graphics Engine Wants to be Better than Vista’s

.NET语言 & 开发架构