优化性能:利用硬件

WPF 的内部体系结构有两个呈现管道,硬件和软件。 本主题提供有关这些呈现管道的信息,以帮助做出有关应用程序性能优化的决策。

硬件呈现管道

决定 WPF 性能的最重要因素之一是它受呈现限制 - 必须呈现的像素越多,性能成本就越高。 但是,可以卸载到图形处理单元 (GPU) 的呈现越多,可以获得的性能优势就越多。 WPF 应用程序硬件呈现管道充分利用了支持最低 Microsoft DirectX 7.0 版的硬件上的 Microsoft DirectX 功能。 支持 Microsoft DirectX 7.0 版和 PixelShader 2.0+ 功能的硬件可以获得进一步优化。

软件呈现管道

WPF 软件呈现管道完全受 CPU 限制。 WPF 利用 CPU 中的 SSE 和 SSE2 指令集来实现优化的、功能齐全的软件光栅器。 在无法使用硬件呈现管道呈现应用程序功能的任何时候,回退到软件都是无缝的。

在软件模式下呈现时遇到的最大性能问题与填充率有关,填充率定义为正在呈现的像素数。 如果担心软件呈现模式下的性能,请尽量减少重绘像素的次数。 例如,如果有一个蓝色背景的应用程序,然后在其上呈现一个些微透明的图像,则将在应用程序中呈现所有像素两次。 因此,与只有蓝色背景相比,使用图像呈现应用程序所花费的时间将增加一倍。

图形呈现层

预测应用程序将在其上运行的硬件配置可能非常困难。 但是,可能需要考虑一种设计,允许应用程序在不同硬件上运行时无缝切换功能,以便充分利用每种不同的硬件配置。

为了实现这一点,WPF 提供了在运行时确定系统图形功能的功能。 图形功能是通过将视频卡归类为三个呈现功能层之一来确定的。 WPF 公开了一个 API,允许应用程序查询呈现功能层。 然后,应用程序就可以在运行时根据硬件支持的呈现层采用不同的代码路径。

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

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

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

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

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

象素着色器、顶点着色器和多纹理功能用于定义特定的 DirectX 版本级别,而这些级别又被用来定义 WPF 中的不同呈现层。

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

  • 呈现层 0 - 无图形硬件加速。 DirectX 版本级别低于 7.0。

  • 呈现层 1 - 部分图形硬件加速。 DirectX 版本级别高于或等于 7.0,并且低于 9.0

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

有关 WPF 呈现层的详细信息,请参阅图形呈现层

另请参阅