互联网上有很多文章但仍然不清楚,所以我需要清楚解释硬件加速如何与WPF协同工作?
答案 0 :(得分:38)
您的问题没有详细说明您在阅读互联网上的文章时遇到的困惑,或者您想了解WPF中硬件加速的具体内容。所以,我会尝试给你一个通用的,虽然是简化的,它是如何工作的总结。
为了获得GPU加速渲染,Windows Presentation Foundation(WPF)通过DirectX管道呈现和呈现图形。 GPU或图形处理单元是为视频卡供电的芯片。从本质上讲,硬件加速可以将WPF应用程序中的图形从计算机的主处理器(CPU)卸载到视频卡的处理器(GPU)。通过在视频卡上使用专门用于渲染图形而不是由CPU运行的软件功能的硬件,可以提高或加速应用程序图形和用户界面的性能。最终目标是复杂的图形例程变成渲染绑定(即受GPU的功能限制),而不是处理器绑定(即受限于计算机CPU的功能和速度)。这样可以释放CPU进行其他工作,充分利用您的视频卡独特的图形功能,并在每次用户升级到更新,更快,更先进的视频卡时加快应用程序的性能(当它们变为可用)。
当然,这假设您的视频卡支持硬件加速。事实上,并非所有人都这样做,WPF采用三层方法来实现这一目标:
如果您的视频卡不提供任何级别的硬件加速,例如,如果您运行的DirectX版本低于7.0,则WPF会回退到第0层渲染模式,或软件加速。
如果您的视频卡支持部分硬件加速,例如您在7.0和9.0之间运行DirectX版本,则WPF使用第1层渲染模式。
如果您的视频卡支持所有图形输出的完整硬件加速,对应于等于或大于9.0的DirectX版本,则WPF使用第2层渲染模式。
This MSDN page提供了有关这些图形渲染层的更多信息,以及确切支持硬件加速的特性和功能。
我不知道你是否已经看过this blog post,但是对我刚刚解释过的内容有了更好的理解,现在再次阅读它可能对你更有意义。
但请记住,与WPF达成协议的部分原因是您不必担心此流程的细节和特性。该技术足够智能,可以尽可能使用硬件优化,在必要时回退到基于软件的渲染。您的WPF应用程序甚至可以在使用传统视频卡的旧计算机上运行,尽管比在较新的客户端上慢。所以这可能是你不需要担心的,除了随意的好奇心。