2019-10-31-WPF-设置纯软件渲染

title author date CreateTime categories
WPF 设置纯软件渲染
lindexi
2019-10-31 8:59:2 +0800
2018-04-20 16:36:44 +0800
WPF 渲染

最近看到有小伙伴说 WPF 使用硬件渲染,如何让 WPF 不使用硬件渲染,因为他觉得性能太好了。万一这个版本发布了,产品经理说下个版本要提升性能就不好了。于是就找到一个快速的方法,让程序不使用硬件渲染这样下个版本要优化就让程序使用硬件渲染。

设置 WPF 使用软件渲染的方法是在 .net framework 3.5 之后才可以的。使用方法很简单,在 Loaded 之后,添加下面代码

HwndSource hwndSource = PresentationSource.FromVisual(this) as HwndSource;
HwndTarget hwndTarget = hwndSource.CompositionTarget;
hwndTarget.RenderMode = RenderMode.SoftwareOnly;

默认的 RenderMode 是 默认,也就是如果判断有硬件就在硬件渲染,如果没有就在 CPU 渲染。

如果设置 SoftwareOnly 就不在硬件渲染。

除了想降低性能,估计没有人会设置这个。

上面的方法是开启窗口级的软渲染,如果想要在进程级设置开启软渲染,请使用这个代码

RenderOptions.ProcessRenderMode = RenderMode.SoftwareOnly; 

如果想要在整个设备运行 WPF 程序都使用软渲染,那么可以通过修改注册表的方法

HKEY_CURRENT_USER\Software\Microsoft\Avalon.Graphics 里面添加一个项,这个项是 dword 命名是 DisableHWAcceleration 使用默认值 0 就可以

那么如何判断当前的软件是使用软渲染的?

通过 WPF Performance Suite 运行之后附加到打开的进程调试,勾选 Draw software renderingwith purple tint 观察原有进程是否被一个诡异的颜色放在上面,如果是那么就是开启软渲染了

Performance Profiling Tools for WPF 的 Draw software renderingwith purple tint 就是使用高亮的矩形覆盖在使用软渲染的范围,如果整个进程都是使用软渲染,那么整个进程都会被高亮

注意,除了设置使用软渲染之外打开高亮矩形可能会显示在使用 bitmap effects 的元素上或通过RenderTargetBitmap渲染的内容等使用软渲染的元素

现在微软已经不开放Performance Profiling Tools for WPF下载,请点击这个链接下载

最近在做渲染优化,更多博客请看 渲染相关

WPF 渲染级别

WPF 使用 Direct2D1 画图入门

Video Rendering Issues for WPF Windows - Rick Strahl's Web Log

Enable Software Rendering in WPF programmatically

Software Rendering Usage in WPF – WPF Performance and .NET Framework Client Profile

posted @ 2019-11-21 16:02  lindexi  阅读(79)  评论(0编辑  收藏  举报