全屏应用对应的是窗口模式应用,全屏应用指的是整个屏幕都是被咱一个应用独占了,屏幕上没有显示其余的应用,此时的应用就叫全屏应用。如希沃白板这个程序。本文主要告诉你们从微软官方的文档以及考古了解到的 Windows 对全屏应用的优化,以及是如何进行的优化,方便小伙伴在撕的时候能够找到根据html
固然,不少小伙伴只是须要依据,因此我就先贴出一篇特别好的官方文档,固然本文大部份内容都是从这篇文档抄的windows
在开始聊 Windows 对全屏应用的优化以前,须要先聊聊窗口的显示方式。在 Windows 上运行的应用,如游戏等有三个不一样的显示模式(考古发现还有一些特别的显示模式,可是太诡异了我就不敢说了)包括 全拼独占模式(FSE Fullscreen Exclusive)、窗口模式(Windowed)、无边框窗口。全屏独占窗口可让应用独占显示和拥有更多(不是所有占有,但也差很少)的显卡资源。而在进入窗口模式的应用须要和其余的应用共享显示和计算资源,其余窗口在后台运行的依然须要使用显卡计算资源。此时的窗口模式应用须要依靠桌面管理器(DWM Desktop Window Manager)进行调度,此时的显卡资源也就须要将资源共享给其余全部的应用,而不是和独占全屏同样。而第三个模式无边框模式的窗口,应用依然是窗口运行,可是这个窗口没有边框,这意味着窗口能够调整大小用来作全屏,但此时的其余应用依然在后台运行性能优化
在微软的这篇文档 Demystifying Fullscreen Optimizations 说在 win10 发布以后,微软进行了全拼窗口优化。可是考古发现其实在 win7 的 dx9 就有这样的优化,详细请看 Direct3D 9Ex Improvements - Win32 apps 官方文档网络
在微软官方文档说 win10 的一个优化是对无边框窗口进行全屏显示的应用的优化,对于无边框的窗口可让用户体验和全屏独占应用同样的方法,可是会比独占全屏模式更加有利。缘由在于独占全屏模式会出现切换的等待,虽然在大部分设备上有显卡的优化,这部分的时间很是短,可是若是想要作频繁的切换,效果也不是很好。而微软 win10 的优化另外一部分就是对提供了更快的应用命令,如 alt+tab 切换窗口和多个屏幕的显示效果。经过大量的测试微软对全屏的无边框窗口的性能优化基本达到了全屏独占窗口的性能app
什么全屏独占窗口能具备更高的性能?其实在上文有提到的是能够独占全部的显示,也就是屏幕的每一个像素都是由这个应用控制的,此时的显卡能够使用更多的计算资源给到这个应用。可是为何后面又提出了让无边框窗口经过修改大小作到全屏?而后花大量的资源优化无边框全屏窗口的性能。缘由在于如下:less
此时小伙伴应该就能了解到为何微软对全屏应用的优化将不只是对全屏独占应用的优化,还包括对无边框窗口的全屏显示优化了。其实无边框窗口自己也是一个窗口,此时的屏幕依然是 DWM 管理显示工具
在 windows xp 开始,在有硬件设备的支持下,微软能给全屏独占应用特别好的支持,可让几乎全部的显卡资源用在了全屏独占应用,同时停掉后台运行窗口的实际渲染(古老渲染方式的窗口请忽略)而在没有硬件设备的支持下,微软也能作到让计算资源大部分放在全屏独占应用post
在 Windows 10 开始(我记得 win7 dx9 就有这个功能)微软不只能够对全屏独占应用提供性能优化支持,同时对无边框的全屏窗口提供几乎同等的性能优化,此时更多的应用都选择使用无边框的全屏窗口而不是全屏独占窗口性能
但若是是进行更多的性能优化,能够考虑进入全屏独占窗口测试
若是是 WPF 程序,那么设置无边框而后设置窗口大小和屏幕同样大,也能在 win10 下拿到这部分优化效果。更多关于 WPF 的优化请看 从 DX 层面讲 WPF 渲染卡顿
注:有小伙伴对于独占全屏应用的多屏幕处理以为有点迷,我换句话告诉你们,请打开一个 UWP 的视频应用,让他进入全屏。这个应用进入全屏就是独占模式,此时你在另外一个屏幕移动一个窗口,逐步移动到视频应用的屏幕上,你能够看到要么视频的屏幕依然播放视频,要么就是你移动过去了,视频应用就最小化了
另外在 win7 下的对无边框的全屏应用的优化也是有坑的,要求你的应用须要覆盖屏幕的每个像素才会隐藏任务栏。在一些有趣的设备上,不会给无边框的全屏应用设置前台焦点,由于窗口没有焦点因此此时的任务栏依然能够显示,解决方法请看 WPF 让窗口激活做为前台最上层窗口的方法
更多博客