DirectX 的高保真图形

Windows 应用程序开发人员长期以来一直使用 Microsoft DirectX 来提供高质量、硬件加速的 3D 图形。 1995年首次推出这项技术时,开发人员可以为游戏提供高质量的 3D 图形,并为愿意为 3D 图形板支付额外费用的玩家和专业人士的工程应用程序。 现在,即使是最廉价的电脑也包括支持 3D 图形硬件。

为了利用这些图形功能,Windows Vista 引入了 DirectX 的 Windows 显示驱动程序模型(WDDM)基础结构,使多个应用程序和服务能够共享图形处理单元(GPU)的资源。 桌面窗口管理器(DWM)使用此技术在 3D 中对任务切换进行动画处理,提供应用程序窗口的动态缩略图图像,并为桌面应用程序提供 Windows Aero 玻璃效果。

Windows 7 将更多图形功能置于应用程序开发人员手中。 通过一组新的 DirectXAPIs,Microsoft Win32 开发人员可以利用 GPU 的最新创新,将快速、可缩放、高质量、2D 和 3D 图形、文本和图像添加到其应用程序中。 在最新的 LCD 显示器上,DirectXAPIs 可以使用颜色深度大于每个颜色组件的 8 位来显示桌面和窗口内容。

借助 DirectX,Win32 开发人员还可以将 GPU 的并行度用于常规用途计算,例如图像处理,并且可以呈现到 DirectX 10 硬件、DirectX 9 硬件、CPU 或远程 Windows 计算机。 这些技术旨在与 Windows 图形设备接口(GDI)和 Windows GDI+互作,确保开发人员可以轻松地在 Win32 代码中保留其现有投资。 (请参阅 2009 年 3 月 DirectX SDK中的新增功能。

以下 COMAPI 提供了这些增强的图形功能:

Direct2D

Microsoft Direct3D 10 为基础,Direct2D 为 Win32 开发人员提供即时模式、独立于分辨率的 2D API,这些 API 使用下一代图形硬件的强大功能,但与当今的 GDI/GDI+ 应用程序和 Direct3D 10 应用程序互作良好。 Direct2D 提供高质量的 2D 渲染,性能优于 GDI 和 GDI+。 它为 Win32 开发人员提供对资源及其管理的精细控制。 (请参阅 Direct2D

DirectWrite

当今的许多应用程序都需要支持高质量的文本呈现、与分辨率无关的大纲字体,以及完整的 Unicode 文本和布局支持。 DirectWrite(一个新的 DirectX 组件)提供这些功能和其他功能:

  • 独立于设备的文本布局系统,可提高文档和 UI 中的文本可读性。
  • 使用 GDI、Direct2D或特定于应用程序的呈现技术的高质量子像素、ClearType 文本呈现。
  • 硬件加速文本,与 Direct2D一起使用时。
  • 支持多格式文本。
  • 支持 OpenType 字体的高级版式功能。
  • 支持所有受支持语言的文本布局和呈现。
  • GDI 兼容的布局和呈现。

DirectWrite 字体系统启用“任何字体”字体用法,用户无需执行单独的安装步骤即可使用字体,以及改进的字体分组结构层次结构,以帮助手动或编程的字体发现。 API 支持多格式文本的度量、绘图和命中测试。 DirectWrite 处理全球和本地化应用程序支持的所有语言中的文本,构建在 Windows 7 中的关键语言基础结构之上。 DirectWrite 还为想要执行自己的布局和 Unicode 到字形处理的开发人员提供低级字形呈现 API。 (请参阅 DirectWrite

Windows 映像组件

在 Windows Vista 中,Windows 映像组件 引入了一个可扩展的框架,用于处理图像和图像元数据。 Windows 映像组件支持的图像格式包括 JPEGPNGTIFF,支持的元数据格式包括 XMPEXIF。 借助 Windows 7,Windows 映像组件通过为渐进式图像解码、扩展 PNG 功能、GIF 元数据以及跨 APPn 段的元数据提供支持,从而扩大了其标准符合性。 (请参阅 Windows 7 中 WIC 的新增功能。

Direct3D 11

Microsoft Direct3D 11 扩展 Direct3D 10 管道的功能,并为 Windows 7 游戏和高端 3D 应用程序提供高效、可靠、可缩放的访问,以访问即将推出的 GPU 和多核 CPU。 除了 Direct3D 10 中找到的功能外,Direct3D 11 还引入了多项新功能。

现在,可以分割几何图形和高阶图面,以支持补丁和细分图面表示形式的可缩放动态内容。

为了充分利用多个 CPU 核心提供的并行处理能力,多线程通过跨多个核心分配应用程序、运行时和驱动程序调用来增加每个帧的潜在呈现调用数。 此外,资源创建和管理已针对多线程使用进行了优化,为流式处理启用更高效的动态纹理管理。

为 Direct3D 11 创建了新的常规用途计算着色器。 与现有着色器不同,这些扩展是可编程管道的扩展,使应用程序能够完全在 GPU 上完成更多工作,与 CPU 无关。 Direct3D 10 中引入的 DrawAuto已扩展为与计算着色器交互。

对高级着色语言(HLSL)进行了多项改进,例如着色器中的动态链接形式有限,以提高专用化复杂性,以及类和接口等面向对象的编程构造。 (请参阅 2009 年 3 月 DirectX SDK中的新增功能。

Direct3D 10 改进

Direct3D 10 包括重新设计的图形管道,其中包含可编程着色器阶段和不可变状态对象,用于初始化固定函数阶段。 状态对象通过最大程度地减少所需的状态更改数来简化管道并提高性能。 着色器阶段的可编程性现在提供了高级着色语言扩展,以支持无限制的着色器指令、通用化着色器资源和整数和按位计算。

该管道还引入了几何着色器阶段,该阶段将完全从 CPU 卸载到 GPU。 通过这一新阶段,可以创建几何图形、将数据流式传输到内存中,并呈现没有 CPU 交互的几何图形。

其他一些改进专为提高性能而设计。 谓词呈现执行遮挡剔除以减少呈现的几何图形量。 实例化 API 可以通过绘制类似对象的多个实例来大幅减少需要传输到 GPU 的几何图形量。 纹理数组使 GPU 能够在不进行 CPU 干预的情况下执行纹理交换。

对 Direct3D 10 和 Direct3D 11 进行了多项添加,以扩展可以使用这些 API 针对的配置范围。 Windows 高级光栅化平台(WARP) 为 Direct3D 10 实现快速、多核可缩放的 CPU 渲染,从而在不使用图形硬件的系统上实现全功能图形呈现。 新增了新的“功能级别”(特别是 Direct3D 10 级别 9)允许 Direct3D 10 和 Direct3D 11APIs 驱动Microsoft Direct3D 9 类硬件,从而扩展 Direct3D 10 或 Direct3D 11 应用程序可面向市场上几乎所有的计算机系统的配置。 (请参阅 Direct3D 10 图形。)

DirectX/GDI 互作性

在 Windows Vista 中,使用 DirectX 和 GDI 呈现到共享图面的应用程序的行为因 DWM 是打开还是关闭而有所不同。 此外,当 DWM 处于打开时,使用 DirectX 和 GDI 的应用程序在 Windows Vista 上的行为与在 Windows XP 上的行为不同。 这导致许多 ISV 在 Windows Vista 上运行其应用程序时禁用 DWM,以确保一致的行为。 随着 Windows 7 中 DirectX 的改进,应用程序现在可以自由混合 DirectX 和 GDI,而无需禁用 DWM。 Windows 7 还通过利用更高效的 Direct3D 10 API 改进了需要 DirectX 和 GDI 之间互作的方案的性能。 (请参阅 Direct2D 和 GDI 互作概述。)