ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

8K分辨率下,使用WPF播放视频造成UI卡顿的问题

2022-07-25 14:06:34  阅读:225  来源: 互联网

标签:8K 分辨率 GDI UI 硬件加速 显卡 WPF 卡顿


我们知道,WPF有两大特性:1、使用DirectX渲染;2、分辨率无关性:WPF使用与设备分辨率无关的单位来度量计算显示界面的像素点,相同大小的情况下,分辨率越高,像素点就会越多。因此在WPF中,使用矢量图(会根据WPF进行缩放,清晰度不变)比位图(固定像素点,缩放会出现锯齿,并且占用空间大)更合适。

在WPF问世之前,传统的Windows应用程序都依靠如下两部分来创建用户界面:

User32:该部分为许多元素(如窗口、按钮和文本框等)提供了熟悉的Windows外观。

GDI/GDI+:该部分为渲染简单形状、文本以及图像提供了绘图支持,但增加了复杂程度(而且通常性能较差)。

后针对User32和GDI/GDI+的限制发行了 DirectX 技术,起初用于开发游戏,注重速度,由显卡支持,可以实现复杂的纹理映射、特殊效果(如半透明)以及三位图形所需的硬件加速功能。

WPF应用程序在底层都是使用DirectX,因此具有两大优势:①可使用丰富的效果;②显卡硬件加速。

但是WPF默认是使用硬件加速的,所以如果在8K屏下,显卡的性能不如意,会出现WPF应用卡顿的问题:

1、例如在WPF应用在8K屏播放视频,不管是使用MediaElement(实际上是对MediaPlayer的封装,因为增加了重业务,所以相对于MediaPlayer,性能方面会差一些)还是MediaPlayer的方式,都会出现卡顿的效果。

  1)该问题尝试对视频的格式进行处理(包括帧率,码率,视频编码,关闭GPU加速等),仍然没办法解决卡顿的问题。

  2)通过对启动的exe->右键属性->兼容性->更改高的DPI设置->勾选替代高DPI缩放行为->选择应用程序(该造成的作用在于:避免应用程序在使用不同显示分辨率的监视器之间移动造成的影响),仍然没办法解决卡顿的问题。

2、如果显卡偶现异常情况,可能会造成视频的画面为黑色,音频仍然可以播放的情况。

针对上面的情况,目前找到比较好的办法是:禁用硬件加速

在app.xaml.cs的OnStartup中添加

RenderOptions.ProcessRenderMode = System.Windows.Interop.RenderMode.SoftwareOnly;

 

标签:8K,分辨率,GDI,UI,硬件加速,显卡,WPF,卡顿
来源: https://www.cnblogs.com/log9527blog/p/16516890.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有