Windows桌面应用程序(1-2-4-1st) Windows图形体系结构概述

Windows为图形提供了几个C++/COM API。这些API显示在下图中。

显示Windows图形API的图表。

  • 图形设备接口(GDI)是Windows的原始图形界面。GDI最初是为16位Windows编写的,然后更新为32位和64位Windows。
  • GDI+是在Windows XP中引入的,作为GDI的继承者。GDI+库是通过一组包装C函数的C++类来访问的。.NET Framework还在System.Drawing命名空间中提供了受管版本的GDI+。
  • Direct3D支持3-D图形。
  • Direct2D是用于2D图形的现代API,是GDI和GDI+的后继者。
  • DirectWrite是一个文本布局和光栅化引擎。您可以使用GDI或Direct2D来绘制栅格化文本。
  • DirectX图形基础结构(DXGI)执行低级任务,例如呈现输出帧。大多数应用程序不直接使用DXGI。而是作为图形驱动程序和Direct3D之间的中间层。

Direct2D和DirectWrite在Windows 7中引入。它们也可以通过”平台更新”用于Windows Vista和Windows Server 2008。有关更多信息,请参阅Windows Vista平台更新。
Direct2D是这个模块的重点。尽管Windows中仍然支持GDI和GDI+,但对于新程序,建议使用Direct2D和DirectWrite。在某些情况下,混合技术可能更实用。对于这些情况,Direct2D和DirectWrite被设计为与GDI进行互操作。
接下来的部分将介绍Direct2D的一些优点。
硬件加速
术语硬件加速是指由图形处理单元(GPU)执行的图形计算,而不是CPU。现代GPU针对渲染图形中使用的计算类型进行了高度优化。一般来说,从CPU转移到GPU的工作越多越好。
虽然GDI支持某些操作的硬件加速,但许多GDI操作都绑定在CPU上。Direct2D分布在Direct3D之上,充分利用了GPU提供的硬件加速。如果GPU不支持Direct2D所需的功能,则Direct2D将退回到软件渲染。总的来说,在大多数情况下,Direct2D比GDI和GDI+更胜一筹。
透明度和消除锯齿
Direct2D支持完全硬件加速的alpha混合(透明度)。
GDI对alpha混合的支持有限。大多数GDI函数不支持alpha混合,虽然GDI在bitblt操作中支持alpha混合。GDI+支持透明度,但alpha混合是由CPU执行的,所以它不受益于硬件加速。
硬件加速的alpha混合还可以实现抗锯齿。混叠是由连续函数采样引起的伪像。例如,当曲线转换为像素时,锯齿会导致锯齿状的外观[3]。任何减少由混叠引起的伪像的技术都被认为是一种抗混叠的形式。在图形中,通过将边缘与背景混合来完成抗锯齿。例如,这里是由GDI绘制的一个圆,以及由Direct2D绘制的同一个圆。

Direct2D中的反锯齿技术的示例。

下图显示了每个圆圈的细节。

以前的图像的细节。

由GDI(左)绘制的圆圈由近似曲线的黑色像素组成。Direct2D绘制的圆(右)使用混合创建更平滑的曲线。
GDI在绘制几何图形(线条和曲线)时不支持消除锯齿。GDI可以使用ClearType绘制反锯齿文本;但除此之外,GDI文本也是别名。别名对于文本尤其明显,因为锯齿线破坏了字体设计,使得文本不易读。虽然GDI+支持抗锯齿,但由CPU应用,所以性能不如Direct2D。
向量图形
Direct2D支持矢量图形。在矢量图形中,数学公式用于表示直线和曲线。这些公式不依赖于屏幕分辨率,因此可以将其缩放到任意尺寸。当图像必须缩放以支持不同的显示器尺寸或屏幕分辨率时,矢量图形特别有用。
下一个
桌面窗口管理器


原文链接:Overview of the Windows Graphics Architecture

你可能感兴趣的:(Windows桌面)