windows

您所在的位置:网站首页 windows提供图形用户界面哪里错了 windows

windows

2024-07-16 22:38| 来源: 网络整理| 查看: 265

文章目录 1、Window 图形体系结构1.1 Direct2D 的好处硬件加速透明度和抗锯齿矢量图形 2、Windows (DWM)WDDM

1、Window 图形体系结构

Windows 为图形提供了多个 C++/COM API。这些 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 是用于 2-D 图形的现代 API,是 GDI 和 GDI+ 的继承者。DirectWrite 是一个文本布局和光栅化引擎。您可以使用 GDI 或 Direct2D 来绘制光栅化文本。DirectX 图形基础结构 (DXGI) 执行低级任务,例如呈现用于输出的帧。大多数应用程序不直接使用DXGI。相反,它充当图形驱动程序和 Direct3D 之间的中间层。

Direct2D 和 DirectWrite 是在 Windows 7 中引入的。虽然 Windows 继续支持 GDI 和 GDI+,但建议新程序使用 Direct2D 和 DirectWrite。

1.1 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 绘制的同一个圆。 在这里插入图片描述 上一张图片的细节。

GDI 绘制的圆(左)由近似曲线的黑色像素组成。Direct2D 绘制的圆(右)使用混合来创建更平滑的曲线。

GDI 在绘制几何图形(直线和曲线)时不支持抗锯齿。GDI 可以使用 ClearType 绘制抗锯齿文本;但除此之外,GDI 文本也是别名。锯齿对于文本尤其明显,因为锯齿状线条会破坏字体设计,从而降低文本的可读性。GDI+虽然支持抗锯齿,但是是CPU应用的,所以性能不如Direct2D。

矢量图形

Direct2D 支持矢量图形。在矢量图形中,数学公式用于表示直线和曲线。这些公式不依赖于屏幕分辨率,因此它们可以缩放到任意尺寸。当必须缩放图像以支持不同的显示器尺寸或屏幕分辨率时,矢量图形特别有用。

2、Windows (DWM)

Desktop Window Manager 从Windows Vista之后,Desktop composition的部分就由Desktop Window Manager完成了,如上图,应用程序画完了界面,告诉DWM把它放到桌面上去。 在这里插入图片描述 1、without DWM 在 Windows Vista 之前,Windows 程序会直接绘制到屏幕上。换句话说,程序将直接写入视频卡显示的内存缓冲区。如果窗口没有正确地重新绘制自己,这种方法可能会导致视觉伪影。例如,如果用户将一个窗口拖到另一个窗口上,并且下面的窗口没有足够快地重新绘制自己,则最顶部的窗口可能会留下痕迹: 在这里插入图片描述 造成该轨迹的原因是两个窗口都绘制到相同的内存区域。当最上面的窗口被拖动时,它下面的窗口必须重新绘制。如果重绘速度太慢,则会导致上图中显示的伪影。

2、DWM Windows Vista 通过引入桌面窗口管理器 (DWM) 从根本上改变了窗口的绘制方式。启用 DWM 后,窗口不再直接绘制到显示缓冲区。相反,每个窗口都绘制到屏幕外内存缓冲区,也称为屏幕外表面。然后 DWM 将这些表面合成到屏幕上。 与旧的图形架构相比,DWM 提供了几个优势。

更少的重绘消息。当一个窗口被另一个窗口遮挡时,被遮挡的窗口不需要重新绘制自己。减少伪像。以前,如上所述,拖动窗口可能会产生视觉伪影。视觉效果。因为 DWM 负责合成屏幕,所以它可以渲染窗口的半透明和模糊区域。高 DPI 的自动缩放。尽管缩放不是处理高 DPI 的理想方式,但对于不是为高 DPI 设置而设计的旧应用程序,它是一种可行的后备方法。(我们稍后将在DPI 和设备无关像素部分中回到这个主题。)另类观点。DWM 可以以各种有趣的方式使用屏幕外表面。例如,DWM 是 Windows Flip 3D、缩略图和动画过渡背后的技术。

总结一句话就,增加一个中介层。

WDDM

DWM本身是基于Direct3D的,D3D下面是WDDM (Windows Display Driver Model ) 显示驱动程序模型。 在这里插入图片描述 自创建早期起,用于对图形进行编程的主要 API Windows是 GDI (图形) 。 此 API 旨在处理大量 2D 输出设备,并构成Windows用户界面体验的基础。 DirectDraw 和 Direct3D 是作为替代 API 引入的,支持全屏游戏和 3D 呈现作为当时现有硬件的扩展。 与 GDI 的交互很复杂。 此设计限制了传统 GDI 元素与 Direct3D 元素的有效混合。 WDM Windows XP 版本(称为 XPDM)反映了 GDI 和 Direct3D 在这里插入图片描述

多年来,3D 视频卡的功能已显著提高,大部分硬件专用于此功能。 新的驱动程序模型 Windows Display Driver Model (WDDM) 将 GPU 和 Direct3D 引入最前面,从而创建了全新的体验 3D 桌面,该体验将 GDI 的 2D 世界与新式可编程 GPU 的功能无缝混合在一起。 借助 WDDM,视频硬件完全由 Direct3D 驱动,所有其他图形接口通过以 Direct3D 为中心的新驱动程序模型与视频硬件通信 (图 2) 。

在这里插入图片描述 总结: 由于xp 的驱动框架是XPDM,比较老,是针对2D 设计,在此基础上提供D3D 9 也就是说 3D很多的功能无法实现,所以微软在 Vista 升级 驱动模型 WDDM。统一了底层实现,并且为3D 做了很多的优化。这就是d3d9 和 d3d10 的主要差别,d3d10 依赖于底层驱动模型(WDDM)可以提供更多的能力。

如果应用程序必须支持 Windows XP 或早期版本的 Windows,请使用 Direct3D 9。如果要支持使用 XPDM 驱动程序运行的 Vista Windows或 Windows 7,请使用 Direct3D 9。 对于缺少 Direct3D 10 或更好的视频硬件的 Windows Vista 或 Windows 7 系统,可以选择使用现有的 Windows XP Direct3D 9 代码路径,或者通过 Direct3D 10.1 或 Direct3D 11 API 使用 10level9 功能级别。使用 Direct3D 11 在 Vista、Windows 7 和 Windows 8 上利用下一代视频Windows 8。 Windows应用商店应用必须使用 Direct3D 11 或更高版本。


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3