与硬件渲染相比,软件渲染导致较少的CPU使用率

时间:2012-07-30 17:18:35

标签: wpf rendering

我有这个WPF应用程序,可以连续显示来自500万像素数码相机的实时图像。图像首先从字节数组转换为bitmapsource,然后显示在Image控件中:

m_imageControl.Source = MyBitMapSource;

流式传输时,CPU利用率约为30-35%。 " RenderCapability.Tier>> 16"指示"第2层"所以我认为我的系统应该足够,WPF会尽可能地利用硬件渲染。

有趣的是,如果使用以下方法强制进行软件渲染:

RenderOptions.ProcessRenderMode = System.Windows.Interop.RenderMode.SoftwareOnly;

CPU利用率降至约25%,app报告显示的帧速率相同(没有性能损失)。

我对这个结果感到困惑,因为我认为硬件渲染应该比软件渲染提供更好的性能(更少的CPU)。有人可以对此有所启发吗?

我的系统设置为:

  • 操作系统:Windows 7 64位Utimate
  • CPU:Intel i3 530四核2.93HGhz
  • 视频卡:NVIDIA GeForce GT 520 1G专用内存
  • 视频卡驱动程序:NVIDIA 8.17.12.9573 09/02/2012

1 个答案:

答案 0 :(得分:2)

来自here

的回答
  

首先将图像从字节数组转换为bitmapsource   显示在图像控件中:“

     

当您使用硬件渲染时,这会强制它序列化   每帧都有一个新的GPU图像。通常,GPU可以缓存   图像,因此序列化开销小于渲染   开销 - 但在你的情况下,你将丢弃GPU上的图像   不断地,所以将它推向GPU并没有任何优势   在硬件中渲染。

     

通过强制进行软件渲染,您可以避免每次都推送到GPU   框架,这就是为什么它在这种情况下实际上表现更好。