【WPF.NET开发】优化性能:图形呈现层

本文内容

  1. 图形硬件
  2. 呈现层定义
  3. 其他资源

呈现层为运行 WPF 应用程序的设备定义图形硬件功能和性能级别。

1、图形硬件

对呈现层级别影响最大的图形硬件功能包括:

  • 视频 RAM - 图形硬件中的视频内存量决定了可用于合成图形的缓冲区大小和数量。

  • 像素着色器 - 像素着色器是基于像素计算效果的图形处理功能。 每个显示帧可能有数百万像素需要处理,具体取决于显示图形的分辨率。

  • 顶点着色器 - 顶点着色器是对对象的顶点数据执行数学运算的图形处理功能。

  • 多纹理支持 - 多纹理支持是指对 3D 图形对象执行混合操作期间应用两个或更多个不同纹理的功能。 多纹理支持的程度取决于图形硬件中的多纹理单元数。

2、呈现层定义

图形硬件的功能决定了 WPF 应用程序的呈现功能。 WPF 系统定义了 3 个呈现层:

  • 呈现层 0 - 无图形硬件加速。 所有图形功能都使用软件加速。 DirectX 版本级别低于 9.0。

  • 呈现层 1 - 某些图形功能使用图形硬件加速。 DirectX 版本级别高于或等于 9.0。

  • 呈现层 2 - 大多数图形功能都使用图形硬件加速。 DirectX 版本级别高于或等于 9.0。

RenderCapability.Tier 属性可用于在应用程序运行时检索呈现层。 使用呈现层可确定设备是否支持某些硬件加速图形功能。 然后,应用程序就可以在运行时根据设备支持的呈现层采用不同的代码路径。

呈现层 0

呈现层的值为 0 意味着设备上的应用程序没有图形硬件加速可用。 在这一层次级别,应假设所有图形都由软件呈现,未采用硬件加速。 该层的功能对应于低于 9.0 的 DirectX 版本。

呈现层 1 与呈现层 2

 备注

从 .NET Framework 4 开始,呈现层 1 进行了重新定义,只包含支持 DirectX 9.0 或更高版本的图形硬件。 支持 DirectX 7 或 8 的图形硬件现定义为呈现层 0。

呈现层的值为 1 或 2 意味着,如果必要的系统资源可用并且尚未耗尽,则 WPF 的大部分图形功能会使用硬件加速。 这对应于高于或等于 9.0 的 DirectX 版本。

下表显示呈现层 1 和呈现层 2 的图形硬件需求差异:

展开表

功能第 1 层第 2 层
DirectX 版本必须高于或等于 9.0。必须高于或等于 9.0。
视频 RAM必须大于或等于 60 MB。必须大于或等于 120 MB。
像素着色器版本级别必须高于或等于 2.0。版本级别必须高于或等于 2.0。
顶点着色器没有要求。版本级别必须高于或等于 2.0。
多纹理单元没有要求。单元数必须大于或等于 4。

以下功能对呈现层 1 和呈现层 2 采用硬件加速:

展开表

功能说明
2D 呈现支持大多数 2D 呈现。
3D 光栅化支持大多数 3D 光栅化。
3D 各向异性筛选WPF 在呈现 3D 内容时尝试使用各向异性筛选。 各向异性筛选是指改善离相机较远且与相机角度较大的图面上纹理的图像质量。
3D MIP 映射WPF 在呈现 3D 内容时尝试使用 MIP 映射。 纹理占据 Viewport3D 中的较小视图区域时,MIP 映射可改进纹理呈现的质量。
径向渐变如果支持,请避免在大型对象上使用 RadialGradientBrush。
3D 光照计算WPF 执行每个顶点的光照,这意味着必须在应用于网格的每个材料的每个顶点计算光照强度。
文本呈现子像素字体呈现使用图形硬件上可用的像素着色器。

以下功能仅对呈现层 2 采用硬件加速:

展开表

功能说明
3D 抗锯齿只有支持 Windows 显示驱动程序模型 (WDDM) 的操作系统(如 Windows Vista 和 Windows 7)才支持 3D 抗锯齿。

以下功能采用硬件加速:

展开表

功能说明
打印内容所有打印内容都使用 WPF 软件管道呈现。
使用 RenderTargetBitmap 的栅格化内容使用 RenderTargetBitmap 的 Render 方法呈现的任何内容。
使用 TileBrush 的平铺内容TileBrush 的 TileMode 属性设置为 Tile 的任何平铺内容。
超过图形硬件最大纹理大小的图面对大多数图形硬件而言,大型图面是指达到 2048x2048 或 4096x4096 像素大小的图面。
视频 RAM 要求超过图形硬件内存的任何操作可使用 Windows SDK 中的WPF性能套件包含的分析器工具来监视应用程序视频 RAM 的使用情况。
分层窗口分层窗口允许 WPF 应用程序将内容呈现到非矩形窗口中的屏幕。 在支持 Windows 显示驱动程序模型 (WDDM) 的操作系统(如 Windows Vista 和 Windows 7)上,分层窗口采用硬件加速。 在 Windows XP 等其他系统上,分层窗口是通过软件来呈现的,未采用硬件加速。

在 WPF 中,可通过设置以下 Window 属性来启用分层窗口:

- WindowStyle = None
- AllowsTransparency = true
- Background = Transparent

3、其他资源

以下资源可帮助你分析 WPF 应用程序的性能特征。

图形呈现注册表设置

WPF 提供了四个注册表设置来控制 WPF 呈现:

展开表

设置说明
禁用硬件加速选项指定是否应启用硬件加速。
最大多重采样值指定用于消除 3D 内容锯齿的多重采样级别。
必需的视频驱动程序日期设置指定系统是否对 2004 年 11 月之前发布的驱动程序禁用硬件加速。
使用参考光栅器选项指定 WPF 是否应使用参考光栅器。

知道如何引用 WPF 注册表设置的任何外部配置实用工具都可以访问这些设置。 还可以直接使用 Windows 注册表编辑器来访问这些值,从而创建或修改这些设置。 

WPF 性能分析工具

WPF 提供了一套性能分析工具,此工具可帮助分析应用程序的运行时行为,并确定可应用的性能优化类型。 下表列出了 Windows SDK 工具中包括的性能分析工具,WPF 性能套件:

展开表

工具说明
分析器用于分析呈现行为。
可视化探查器用于按可视化树中的元素分析 WPF 服务(如布局和事件处理)的使用。

WPF 性能套件提供丰富的性能数据的图形视图。 

DirectX 诊断工具

DirectX 诊断工具 Dxdiag.exe 专门用于帮助你解决 DirectX 相关问题。 DirectX 诊断工具的默认安装文件夹是:

~\Windows\System32

运行 DirectX 诊断工具时,主窗口中包含一组可用于显示和诊断 DirectX 相关信息的选项卡。 例如,“系统”选项卡提供有关计算机的系统信息,并指定安装在计算机上的 DirectX 版本。

directxdiagnostictool-01.png?view=netframeworkdesktop-4.8


“DirectX 诊断工具”主窗口

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/659023.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【优秀案例】回本周期缩短10%!日安装量级高达5000以上!看NetMarvel如何赋能Ball Sort达成多项目标

“合成大西瓜在海外火了” 没想到,在国内已经过气的玩法转战到海外后,还能够翻红的这么彻底? 实际上,市面上很多在本土市场不温不火但转战海外赛道却盈利感人的应用不在少数,比如我们今天的重头戏《Ball Sort - Colo…

【云上建站】快速在云上构建个人网站4——网站备案

快速在云上构建个人网站4——网站备案 一、为网站配置域名1、使用域名的原因2、域名使用逻辑3、域名配置流程 二、域名注册1、查询域名:2、确认订单:3、实名认证域名4、域名解析配置解析域名:解析设置:访问域名: 一、为…

【深度学习:多关节嵌入模型】 Meta 解释的 ImageBind 多关节嵌入模型

【深度学习:多关节嵌入模型】 Meta 解释的 ImageBind 多关节嵌入模型 Meta 发布开源人工智能工具的历史分段任何模型DINOv2 什么是多模态学习?什么是嵌入?什么是 ImageBind?集成在 ImageBind 中的模式图像绑定架构特定模式编码器跨…

Flask框架开发学习笔记《6》前后端不分离基础框架

Flask框架开发学习笔记《6》前后端不分离基础框架 Flask是使用python的后端,由于小程序需要后端开发,遂学习一下后端开发。 主要包含如下文件: static 目录中存储了图片templates 目录中存储了 html 文件utils.py 包含了 log 函数server.p…

资深Android逆袭、华为鸿蒙为安卓程序员开辟了一条新道路

本文章主要从以下5个方面来展开聊聊这个话题: 1.什么是鸿蒙 2.鸿蒙系统发展时间线 3.鸿蒙是套壳Android吗? 4.鸿蒙的生态(用户以及开发者) 5.一些建议 1月18日,在鸿蒙生态千帆启航仪式上,华为宣布了继鸿蒙4…

实现单点登录

指再多系统应用群中登录一个系统,便可在其他所有系统中得到授权而无需再次登录,包括单点登录与单点注销两部分。 相比于单系统登录,sso需要一个独立的认证中心,只有认证红心能接受用户的用户名密码等安全信息,其他系统…

C#,打印漂亮的贝尔三角形(Bell Triangle)的源程序

以贝尔数为基础,参考杨辉三角形,也可以生成贝尔三角形(Bell triangle),也称为艾特肯阵列(Aitkens Array),皮埃斯三角形(Peirce Triangle)。 贝尔三角形的构造…

大创项目推荐 题目:基于深度学习的中文对话问答机器人

文章目录 0 简介1 项目架构2 项目的主要过程2.1 数据清洗、预处理2.2 分桶2.3 训练 3 项目的整体结构4 重要的API4.1 LSTM cells部分:4.2 损失函数:4.3 搭建seq2seq框架:4.4 测试部分:4.5 评价NLP测试效果:4.6 梯度截断…

鸿蒙 ArkTS 从数组内查找指定的数据

let arr [1, 2, 3, 4, 5]; let target 3; let result arr.filter(item > item target); let a String(result) 将数字转换成文本型 console.log(a); 亲爱的读者: 首先,我要感谢您抽出宝贵的时间阅读这篇文章。我深知,您的每一分每一…

05 MyBatis之表关系的声明+事务+SqlSession三件套的作用域

MyBatis 支持一对一,一对多,多对多查询。XML 文件和注解都能实现关系的操作。多对多实质就是一对多 1. 表关系的维护 1.1 One一对一 一对一查询和多表(两表)查询很相似, 都能查询两表的全部属性 区别是一对一可以在对象中嵌套对象, 呈现包含关系; 多表…

行为型设计模式—迭代器模式

迭代器模式:也叫作游标模式,能在不暴露复杂数据结构内部细节的情况下遍历其中所有的元素。在迭代器的帮助下, 客户端可以用一个迭代器接口以相似的方式遍历不同集合中的元素。 当集合背后为复杂的数据结构,且希望对客户端隐藏其复…

Qt扩展-muParser数学公式解析

muParser数学公式解析 一、概述1. 针对速度进行了优化2. 支持的运算符3. 支持的函数4. 用户定义的常量5. 用户定义的变量6. 自定义值识别回调7. 其他功能 二、内置函数三、内置二元运算符四、三元运算符五、内置常量六、源码引入1. 源码文件2. 编译器开关1. MUP_BASETYPE2.MUP_…

【中关村开源生态论坛暨大模型智能应用技术大会】—— 探索AI和开源在未来的应用

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-9ttR7rpX3BzyF2C4 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

阿赵UE学习笔记——13、贴花

阿赵UE学习笔记目录 大家好,我是阿赵。   继续学习虚幻引擎的使用。这次介绍一种特殊的材质类型,贴花。 一、获取贴花资源 在没有分析贴花的原理之前,可以先去获得一些免费的贴花资源来使用,比如在Quixel上面就有专门的一个资源…

初识C语言·文件操作

目录 1 关于文件 i)文件的基本知识 ii)数据文件的分类 2 文件打开和关闭 i)流和标准流 ii)文件指针 iii)文件打开和关闭 3 文件的顺序读写 i) fgetc fputc ii) fgets fputs iii) fscanf fprintf iv) fwrite fread 4 对比一组函数 scanf/fscanf/sscanf/printf/fpri…

VMware虚拟机安装macOS

VMware虚拟机安装macOS 文章目录 VMware虚拟机安装macOS先看效果一、准备工作①:镜像资源下载②:虚拟机③:安装macOS所必要的插件 二、开始安装①:创建新的虚拟机②:自定义硬件③:开启虚拟机 先看效果 一、…

新东方财报解读:新一轮增长逻辑或蕴于电商业务?

从财报表现来看,教育市场的元气在持续提升。 近日,新东方、好未来等上市公司陆续公布了2023年9-11月的业绩表现。其中,好未来实现营收3.7亿美元,同比增长60.5%;归母净亏损2394.6万美元,亏幅同比收窄53.6%。…

Redis常见数据类型[上]

目录 前言: 基本全局命令 KEYS EXISTS DEL EXPIRE TTL TYPE 数据结构和内部编码 内部编码: 单线程架构 引出单线程模型: 为什么单线程还这么快? String字符串 字符串数据类型: 常见命令: S…

嵌入式学习第十五天!(内存管理、链表)

1. 内存管理: 1. malloc void *malloc(size_t size); 功能:申请堆区空间 参数:size:申请堆区空间的大小 返回值:返回获得的空间的首地址,失败返回NULL 2. free void free(void *ptr); 功能:释…

信效度检验2(SPSS

目录 1.效度介绍:2.效度检验:小结: 1.效度介绍: 用于研究题项设计是否合适 2.效度检验: 点击 降维->因子 把涉及到因变量的问题放入即可: 勾选: 得到输出结果: KMO值 0.7…