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

news2024/11/15 5:55:28

本文内容

  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.coloradmin.cn/o/1423054.html

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

相关文章

点餐APP开发需要用到的一些源代码

在数字化日益普及的今天,点餐APP已经成为人们日常生活的重要组成部分,从校园食堂到高级餐厅,从快餐外卖到定制化营养餐,点餐APP的多样性和便利性满足了不同用户的需求,本文将深入探讨在开发一款点餐APP时可能用到的源代…

24.Android中的列表--ListView

ListView 1.简单列表--ArrayAdapter <?xml version"1.0" encoding"utf-8"?> <ScrollView xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.com/apk/res-auto"xmlns:tools&qu…

C++ 入门(三)— 函数

文章目录 函数简介函数返回值Void 函数&#xff08;非值返回函数&#xff09;函数参数和参数局部范围函数的声明和定义具有多个代码文件的程序 函数简介 C 程序的方式工作。当程序遇到函数调用时&#xff0c;它将在一个函数内按顺序执行语句。函数调用是告诉 CPU 中断当前函数…

责任链模式在java中的实现

1 总览 2 概念 避免请求发送者与接收者耦合在一起&#xff0c;让多个对象都有可能接收请求&#xff0c;将这些对象连接成一条链&#xff0c;并且沿着这条链传递请求&#xff0c;直到有对象处理它为止。职责链模式是一种对象行为型模式。 3 实现 公共部分&#xff0c;一个系…

法大大入选2023德勤“中国明日之星”

1月30日&#xff0c;德勤审计及鉴定合伙人、华南区上市业务合伙人、资本市场服务部王杰森莅临法大大总部&#xff0c;为法大大颁发“2023德勤中国 高科技高成长 明日之星”奖杯&#xff0c;法大大联合创始人兼首席法务官梅臻代表领奖。 &#xff08;左为王杰森&#xff0c;右为…

海外代理IP推荐:5大最佳Luminati替代方案

在跨境出海业务中&#xff0c;海外代理IP是非常高效的助力工具&#xff0c;因此也衍生了非常多的代理服务商。想必大多数都知道Brightdata&#xff08;原名Luminati&#xff09;&#xff0c;但是&#xff0c;由于代理IP的高需求&#xff0c;慢慢地我们发现除了高价的卢米&#…

Prometheus的promQL语法

时间序列 node_cpu_guest_seconds_total{cpu"0"} #{}外的是监控项(指标数据) #{}内的是标签 #node使用cpu的描述统计&#xff0c;符合标签cpu0的时间序列&#xff0c;查询出的结果 #指标项标签就是Prometheus的时间序列_address_ #双下划线标签是Prometheus系统的默…

【小白学unity记录】使用unity播放声音

1. 示例 unity中播放声音涉及到两个组件。AudioSource和AudioClip。AudioSource可以理解为播放器&#xff0c;AudioClip可以理解为音频片段文件。AudioSource可以通过.clip属性切换音频片段。 using UnityEngine;public class PlayerController : MonoBehaviour {private int…

1.迭代与递归 - JS

迭代与递归是函数进阶的第一个门槛。迭代就是对已知变量反复赋值变换&#xff1b;递归就是函数体内调用自身。 迭代 一个迭代是就是一个循环&#xff0c;根据迭代式对变量反复赋值。 求近似根&#xff08;切线法&#xff09;&#xff1b; 迭代描述&#xff1a; x 0 x_0 x0…

安装并开始设置 Windows 终端(命令提示符或Windows PowerShell或Azure Cloud Shell)

安装 安装 若要试用最新的预览功能&#xff0c;可能还需要安装 Windows 终端预览。 ‼️备注 如果你无法访问 Microsoft Store&#xff0c;GitHub 发布页上发布有内部版本。 如果从 GitHub 安装&#xff0c;Windows 终端将不会自动更新为新版本。 有关使用包管理器&#xff…

品牌如何持续发展,重点在于把握消费动机

发展周期较短的品牌可能有很多原因&#xff0c;但是长效发展的品牌却有相似的共性。所有能长效发展的品牌&#xff0c;都牢牢把握住了顾客的消费动机&#xff0c;人们会因为很多原因去消费&#xff0c;这在营销界就被称为“消费动机”&#xff0c;有的消费动机是短暂的&#xf…

MySQL中的数据类型(五)

MySQL中的数据类型&#xff08;五&#xff09; 一、整数类型 数值类型中的长度 m 是指显示长度&#xff0c;并不表示存储长度&#xff0c;只有字段指定 zerofill 时有用 例如&#xff1a; int(3) &#xff0c;如果实际值是 2 &#xff0c;如果列指定了 zerofill &#xff0c;…

【UE 材质】球形遮罩材质

效果 步骤 1. 新建一个材质&#xff0c;这里命名为“M_Mask” 打开“M_Mask”&#xff0c;混合模式设置为已遮罩&#xff0c;勾选双面显示 在材质图表中添加如下节点 此时我们将一个物体赋予材质“M_Mask”并放置在世界坐标原点&#xff0c;可以看到如下效果 2. 如果我们希望能…

C++ 类与对象(中)

本节目标 1. 类的6个默认成员函数 2. 构造函数 3. 析构函数 4. 拷贝构造函数 1.类的6个默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为空类。 空类中真的什么都没有吗&#xff1f;并不是&#xff0c;任何类在什么都不写时&#xff0c;编译器会自动生成以下6个默认…

【golang】13、viper 配置库 | 配置文件读写 | 使用方式 | 源码逻辑分析

文章目录 一、使用方式1.1 特性1.2 优势1.3 设置1.3.1 默认值1.3.2 配置文件1.3.3 写配置文件1.3.4 监听配置文件变化1.3.5 从 io.Reader 读配置1.3.6 Setting Overrides1.3.7 使用 Alias1.3.8 环境变量1.3.9 命令行 Flags1.3.8.1 Flag 接口 1.3.9 配置中心1.3.9.1 未加密1.3.9…

RabbitMQ(一):最新版rabbitmq安装

目录 1 简介1.1特性及好处 2 安装2.1 Ubuntu22.04 apt安装最新rabbitmq1、一键部署2、验证3、RabbitMQWeb管理界面及授权操作4、添加远程用户5、一些常用命令 2.2 Docker安装RabbitMQ - Ubuntu22.041、安装docker2、启动rabbitmq 1 简介 RabbitMQ是一个开源的遵循AMQP协议实现…

多模态大模型综述整理

论文&#xff1a;MM-LLMs: Recent Advances in MultiModal Large Language Models 论文地址&#xff1a; https://arxiv.org/pdf/2401.13601.pdf 表1&#xff1a;26种主流多模态大型语言模型&#xff08;MM-LLMs&#xff09;概要 输入到输出模态&#xff08;I→O&#xff09;…

Sentinel 知识总结

Sentinel 知识总结 Sentinel 是阿里巴巴开源的一个轻量级流量控制框架&#xff0c;主要用于保护系统稳定性和流畅性。它提供了多种流量控制策略&#xff0c;包括QPS限流、并发数限流、线程池限流等&#xff0c;并且支持集群限流。此外&#xff0c;Sentinel还提供了熔断降级、系…

机器学习 | 掌握线性回归的实战技巧

目录 初识线性回归 损失和优化 欠拟合与过拟合 正则化线性模型 模型的保存与加载 初识线性回归 线性回归(Linearregression)是利用回归方程(函数)对一个或多个自变量(特征值)和因变量(目标值)之间关系进行建模的一种分析方式。特点是&#xff1a;有一个自变量的情况称为单…

Linux实验记录:使用firewalld

前言&#xff1a; 本文是一篇关于Linux系统初学者的实验记录。 参考书籍&#xff1a;《Linux就该这么学》 实验环境&#xff1a; VmwareWorkStation 17——虚拟机软件 RedHatEnterpriseLinux[RHEL]8——红帽操作系统 备注: RHEL8系统中集成了多款防火墙管理工具&#xf…