我有这个 WPF 应用程序,它可以连续显示来自 5MP 数码相机的实时图像。图像首先从字节数组转换为位图源,然后显示在 Image 控件中:
m_imageControl.Source = MyBitMapSource;
流式传输时,CPU 利用率约为 30-35%。“RenderCapability.Tier >> 16”表示“Tier 2”,所以我认为我的系统应该足够了,WPF 将尝试尽可能多地利用硬件渲染。
有趣的是,如果通过使用强制软件渲染:
RenderOptions.ProcessRenderMode = System.Windows.Interop.RenderMode.SoftwareOnly;
CPU 使用率下降到 25% 左右,并且应用程序报告了相同的显示帧速率(没有性能影响)。
我对这个结果感到困惑,因为我认为硬件渲染应该比软件渲染提供更好的性能(更少的 CPU)。有人可以对此有所启发吗?
我的系统设置是:
- 操作系统:Windows 7 64-bit Utimate
- CPU:英特尔 i3 530 四核 2.93HGHz
- 显卡:NVIDIA GeForce GT 520 1G 专用内存
- 显卡驱动程序:NVIDIA 8.17.12.9573 09/02/2012