【WPF.NET开发】优化性能:图形呈现层

本文内容

  1. 图形硬件
  2. 呈现层定义
  3. 其他资源

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

1、图形硬件

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

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

  • 像素着色器 - 像素着色器是基于像素计算效果的图形处理功能。 每个显示帧可能有数百万像素需要处理,具体取决于显示图形的分辨率。

  • 顶点着色器 - 顶点着色器是对对象的顶点数据执行数学运算的图形处理功能。

  • 多纹理支持 - 多纹理支持是指对 3D 图形对象执行混合操作期间应用两个或更多个不同纹理的功能。 多纹理支持的程度取决于图形硬件中的多纹理单元数。

2、呈现层定义

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

  • 呈现层 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。
视频 RAM必须大于或等于 60 MB。必须大于或等于 120 MB。
像素着色器版本级别必须高于或等于 2.0。版本级别必须高于或等于 2.0。
顶点着色器没有要求。版本级别必须高于或等于 2.0。
多纹理单元没有要求。单元数必须大于或等于 4。

以下功能对呈现层 1 和呈现层 2 采用硬件加速:

展开表

功能说明
2D 呈现支持大多数 2D 呈现。
3D 光栅化支持大多数 3D 光栅化。
3D 各向异性筛选WPF 在呈现 3D 内容时尝试使用各向异性筛选。 各向异性筛选是指改善离相机较远且与相机角度较大的图面上纹理的图像质量。
3D MIP 映射WPF 在呈现 3D 内容时尝试使用 MIP 映射。 纹理占据 Viewport3D 中的较小视图区域时,MIP 映射可改进纹理呈现的质量。
径向渐变如果支持,请避免在大型对象上使用 RadialGradientBrush
3D 光照计算WPF 执行每个顶点的光照,这意味着必须在应用于网格的每个材料的每个顶点计算光照强度。
文本呈现子像素字体呈现使用图形硬件上可用的像素着色器。

以下功能仅对呈现层 2 采用硬件加速:

展开表

功能说明
3D 抗锯齿只有支持 Windows 显示驱动程序模型 (WDDM) 的操作系统(如 Windows Vista 和 Windows 7)才支持 3D 抗锯齿。

以下功能采用硬件加速:

展开表

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

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

WindowStyle = None
AllowsTransparency = true
Background = Transparent

3、其他资源

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

图形呈现注册表设置

WPF 提供了四个注册表设置来控制 WPF 呈现:

展开表

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

知道如何引用 WPF 注册表设置的任何外部配置实用工具都可以访问这些设置。 还可以直接使用 Windows 注册表编辑器来访问这些值,从而创建或修改这些设置。 

WPF 性能分析工具

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

展开表

工具说明
分析器用于分析呈现行为。
可视化探查器用于按可视化树中的元素分析 WPF 服务(如布局和事件处理)的使用。

WPF 性能套件提供丰富的性能数据的图形视图。 

DirectX 诊断工具

DirectX 诊断工具 Dxdiag.exe 专门用于帮助你解决 DirectX 相关问题。 DirectX 诊断工具的默认安装文件夹是:

~\Windows\System32

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

directxdiagnostictool-01.png?view=netframeworkdesktop-4.8


“DirectX 诊断工具”主窗口

  • 20
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吉特思米(gitusme)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值