图形渲染层级

呈现层定义运行 WPF 应用程序的设备的图形硬件功能和性能级别。

图形硬件

图形硬件的功能对呈现层级别影响最大的是:

  • 视频 RAM 图形硬件上的视频内存量决定了可用于组合图形的缓冲区的大小和数量。

  • 像素着色器 像素着色器是一个图形处理函数,可基于每个像素计算效果。 根据显示图形的分辨率,可能需要为每个显示帧处理几百万像素。

  • 顶点着色器 顶点着色器是图形处理函数,用于对对象的顶点数据执行数学运算。

  • 多文本支持 多文本支持是指在三维图形对象混合作期间应用两个或多个不同纹理的能力。 多文本支持的程度取决于图形硬件上的多文本单位数。

渲染等级定义

图形硬件的功能决定了 WPF 应用程序的呈现功能。 WPF 系统定义三个呈现层:

  • 呈现层 0 无图形硬件加速。 所有图形功能都使用软件呈现。 DirectX 版本级别小于版本 9.0。

  • 渲染级别 1 某些图形功能使用图形硬件加速技术。 DirectX 版本级别大于或等于版本 9.0。

  • 呈现层 2 大多数图形特性都使用图形硬件加速。 DirectX 版本级别大于或等于版本 9.0。

RenderCapability.Tier 属性允许在应用程序运行时检索呈现层。 使用呈现层来确定设备是否支持某些硬件加速图形功能。 然后,应用程序可以在运行时采用不同的代码路径,具体取决于设备支持的呈现层。

呈现层 0

呈现层值为 0 表示设备上没有可用于应用程序的图形硬件加速。 在此层级别,应假定所有图形都由没有硬件加速的软件呈现。 此层的功能对应于小于 9.0 的 DirectX 版本。

渲染层 1 和渲染层 2

注释

从 .NET Framework 4 开始,已重新定义呈现层 1,仅包含支持 DirectX 9.0 或更高版本的图形硬件。 支持 DirectX 7 或 8 的图形硬件现在定义为呈现层 0。

呈现层值为 1 或 2 表示,如果必要的系统资源可用且尚未耗尽,WPF 的大多数图形功能将使用硬件加速。 这对应于大于或等于 9.0 的 DirectX 版本。

下表显示了渲染级别 1 和渲染级别 2 的图形硬件要求的差异:

功能 / 特点 第 1 层 第 2 层
DirectX 版本 必须大于或等于 9.0。 必须大于或等于 9.0。
显存 必须大于或等于 60 MB。 必须大于或等于 120 MB。
像素着色器 版本级别必须大于或等于 2.0。 版本级别必须大于或等于 2.0。
顶点着色器 无要求。 版本级别必须大于或等于 2.0。
多纹理单元 无要求。 单位数必须大于或等于 4。

以下特性和功能是为第 1 层和第 2 层渲染进行硬件加速的:

功能 / 特点 注释
2D 渲染 支持大多数 2D 渲染。
三维光栅化 支持大多数 3D 光栅化渲染。
3D 各向异性过滤 WPF 在呈现 3D 内容时尝试使用各向异性过滤。 各向异性过滤是指提高相对于相机距离较远且角度陡峭的表面纹理的图像质量。
3D MIP 映射 WPF 在呈现 3D 内容时尝试使用 MIP 映射。 当纹理在Viewport3D的视野中占据较小空间时,MIP映射可提高纹理呈现质量。
径向渐变 支持时,请避免对大型对象使用 RadialGradientBrush
三维照明计算 WPF 执行逐顶点照明,这意味着必须在应用于网格的每种材料的每个顶点上计算光强度。
文本呈现 子像素字体呈现使用图形硬件上的可用像素着色器。

以下特性和功能仅在呈现层级 2 中进行硬件加速:

功能 / 特点 注释
3D 抗锯齿 仅支持 Windows 显示驱动程序模型(WDDM)的作系统(例如 Windows Vista 和 Windows 7)才支持 3D 抗锯齿。

以下特性和功能未经过硬件加速:

功能 / 特点 注释
打印的内容 所有打印内容都使用 WPF 软件管道呈现。
使用RenderTargetBitmap的光栅化内容 使用 Render 方法通过 RenderTargetBitmap 呈现的任何内容。
使用TileBrush的平铺内容 将任何平铺内容中的TileBrush属性的TileMode设置为Tile
超过图形硬件最大纹理大小的表面 对于大多数图形硬件,大型图面的大小为 2048x2048 或 4096x4096 像素。
任何视频RAM需求量超过图形硬件内存的操作 可以使用 Windows SDK 的 WPF 性能套件 中包含的 Perforator 工具监视应用程序视频 RAM 使用情况。
分层窗口 分层窗口允许 WPF 应用程序将内容呈现到非矩形窗口中的屏幕。 在支持 Windows 显示驱动程序模型(WDDM)(如 Windows Vista 和 Windows 7)的操作系统上,分层窗口是硬件加速的。 在其他系统上(如 Windows XP)上,分层窗口由没有硬件加速的软件呈现。

可以通过设置以下 Window 属性在 WPF 中启用分层窗口:

- WindowStyle = None
- AllowsTransparency = true
- Background = Transparent

其他资源

以下资源可帮助你分析 WPF 应用程序的性能特征。

图形渲染注册表设置

WPF 提供了四个用于控制 WPF 渲染的注册表设置:

设置 DESCRIPTION
禁用硬件加速选项 指定是否应启用硬件加速。
最大多重采样值 指定抗锯齿 3D 内容的多重采样程度。
所需的视频驱动程序日期设置 指定系统是否禁用 2004 年 11 月之前发布的驱动程序的硬件加速。
使用参考光栅器选项 指定 WPF 是否应使用参考光栅化器。

任何知道如何引用 WPF 注册表设置的外部配置实用工具都可以访问这些设置。 还可以通过使用 Windows 注册表编辑器直接访问值来创建或修改这些设置。 有关详细信息,请参阅图形呈现注册表设置

WPF 性能分析工具

WPF 提供了一套性能分析工具,可用于分析应用程序的运行时行为,并确定可以应用的性能优化类型。 下表列出了 Windows SDK 工具 WPF 性能套件中包含的性能分析工具:

工具 DESCRIPTION
穿孔器 用于分析呈现行为。
可视探查器 用于对可视化树中的元素如何使用 WPF 服务(如布局和事件处理)进行性能分析。

WPF 性能套件提供了丰富的性能数据的图形视图。 有关 WPF 性能工具的详细信息,请参阅 WPF 性能套件

DirectX 诊断工具

DirectX 诊断工具 Dxdiag.exe旨在帮助解决 DirectX 相关问题。 DirectX 诊断工具的默认安装文件夹为:

~\Windows\System32

运行 DirectX 诊断工具时,主窗口包含一组选项卡,可用于显示和诊断 DirectX 相关信息。 例如, “系统 ”选项卡提供有关计算机的系统信息,并指定计算机上安装的 DirectX 版本。

屏幕截图:DirectX 诊断工具
DirectX 诊断工具主窗口

另请参阅