最近看到有小伙伴说 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

我搭建了自己的博客 https://blog.lindexi.com/ 欢迎大家访问,里面有很多新的博客。只有在我看到博客写成熟之后才会放在csdn或博客园,但是一旦发布了就不再更新

如果在博客看到有任何不懂的,欢迎交流,我搭建了 dotnet 职业技术学院 欢迎大家加入


本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接:http://blog.csdn.net/lindexi_gd ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。

WPF 设置纯软件渲染相关推荐

  1. 3dmax软件渲染模型导出JPG格式图片的方法

    3dmax软件渲染模型导出JPG格式图片的方法.感兴趣的小伙伴们快和小编一起看看3dmax软件渲染模型怎么保存为JPG格式的吧! 3dmax软件渲染模型导出JPG格式图片的方法如下: 步骤一.首先在电 ...

  2. maya对象属性_超详细!maya软件渲染属性设置说明(一)

    了解了通用渲染设置选项命令之后,需要分别对Software Render(软件渲染).Hardware Render(硬件渲染).Hardware 2.0 Render(硬件2.0渲染)和Vector ...

  3. WPF 使用 SharpDx 异步渲染

    本文告诉大家如何通过 SharpDx 进行异步渲染,但是因为在 WPF 是需要使用 D3DImage 画出来,所以渲染只是画出图片,最后的显示还是需要 WPF 在他自己的主线程渲染 本文是一个系列,希 ...

  4. output怎么用_如何用 C++ 写一个可编程软件渲染器?

    今天你想用最新的 D3D12 画一个三角形,少说也要上千行代码了,对于初学者来讲,这个门槛是非常高的,太多干扰了,而一千多行代码,已经足够你重头实现一个简易版 D3D 了,为什么不呢?比起从图形 AP ...

  5. 【CCS仿真系列教程】手把手教你纯软件仿真实现音频滤波

    [CCS仿真系列教程]手把手教你纯软件仿真实现音频滤波 事先说明 示例项目下载 示例使用说明 首先用Matlab生成加了噪声的音频 将我的项目弄你的CCS的WorkSpace中 把Matlab生成后的 ...

  6. WPF 设置属性“System.Windows.FrameworkElement.Style”时引发了异常

    开发工具与关键技术:Microsoft Visual Studio 2017.WPF 现象: 用WPF开发的软件在个别电脑系统下安装后无法启动,报异常:设置属性"System.Windows ...

  7. [软件渲染器入门]六-应用纹理、背面剔除以及一些WebGL相关

    译者前言: 本文译自MSDN,原作者为David Rousset,文章中如果有我的额外说明,我会加上[译者注:]. 正文开始: 下面是本系列的最后一个章节了.我们将看到如何从Blender中导出贴图和 ...

  8. TinyRenderer(1):500行代码实现软件渲染器

    Lsson 0 从头开始 这是一个微型软件光栅化程序,如果您正在寻找一个微型软件光线跟踪器,则可以在此处找到它. 我的源代码无关紧要.阅读本文并实现自己的渲染器.只有当您经历所有细微的细节时,您才能了 ...

  9. 500行C++代码实现软件渲染器 - 0.引言

    直接阅读源代码并不容易理解,建议阅读维基之后再来实现你自己的渲染器.只有当你弄懂了所有的技术细节之后,你才会知道渲染器如何工作.我很乐意通过邮件得到读者的反馈.如果你有任何问题,欢迎与我联系(dmit ...

最新文章

  1. python 提交表单登录不成功_Python http requests模拟登录与提交表单的实现问题
  2. mybatis 调用 oracle 存储过程 select into 无记录时NO_DATA_FOUND异常处理分析
  3. 机器学习笔记(二)逻辑回归和正则化
  4. 算法提高课-搜索-Flood fill算法-AcWing 1097. 池塘计数:flood fill、bfs
  5. 树莓派AI视觉云台——6、Linux常用命令及vim编辑器的使用
  6. ios越狱系统UIGestureRecognizer事件截获问题
  7. Run-time system与虚拟机
  8. 红包指定分配金额php,php仿微信红包分配算法的实现方法_PHP
  9. 【Spring】模块
  10. LOW_VALUE、HIGH_VALUE、ENDPOINT_VALUE转换--UTL_RAW、DBMS_STATS.CONVERT_RAW_VALUE
  11. 6016.Linux shell脚本编程规范(第1版)
  12. python 画三角形matli_Python实现PS滤镜特效之扇形变换效果示例
  13. 黑盒测试方法之错误推测法概述
  14. 前端剑法第三式————碎岩
  15. 从numpy掩码到pytorch掩码
  16. 【Linux】Linux私有组,主要组和附加组
  17. 阿里云建站的基本流程
  18. 《奋斗》--值得每个正在拼搏的年轻人看看!
  19. 花式吊打源码中 Android.mk 集锦
  20. (转)关于用户管理模块

热门文章

  1. mysql报错:Column count doesn‘t match value count at row 1
  2. 观《源代码》(电影)有感
  3. 通达OA应用中心操作手册
  4. Particle Filter 粒子滤波
  5. 高防IP适用于那些行业呢?
  6. 手机拍的照片计算机内存不足怎么办,苹果手机照片太多,内存不够用怎么办?...
  7. 2020中国农业银行 信息科技/金融科技岗 春招 笔试+面经
  8. MySQL持久化实现UTF-8来解决乱码问题
  9. Alertmanager 使用阿里云电话告警。
  10. 虚荣和骄傲会让你跌得很惨