2019-3-8-为何使用-DirectComposition
title | author | date | CreateTime | categories |
---|---|---|---|---|
为何使用 DirectComposition
|
lindexi
|
2019-3-8 8:56:9 +0800
|
2018-04-18 09:44:40 +0800
|
windows DirectComposition
|
本文主要翻译Why use DirectComposition,介绍 DirectComposition 的功能和优点。
创建更加迷人的界面
虽然界面创建好看是设计师的能力,但是如何可以提高性能,支持更多的动画,这时设计师才可以做出更好的界面。
基于 windows 的软件可以通过 DirectComposition 组合 Visual 和对 Visual 做动画来创建迷人的界面,通过这个技术可以创建独一无二的视觉体验。
虽然看起来很多界面框架都这样说,但是 DirectComposition 从字面看就是 组合的Direct。
流畅丰富的动画
现在的界面如果没有动画,一般是很难做出好的体验。如果有很好的动画,但是性能很差,用户也会觉得程序员可以祭天。如何使用 DirectComposition ,可以获得高性能的位图组合引擎,因为有硬件加速。对于帧率要求高的动画也可以使用 DirectComposition ,可以支持高速绘制、缩放和组合很多动画。
如果使用 DirectComposition ,那么 UI 线程不会因为渲染而 starve ,因为 DirectComposition 是在一个专用的线程运行和程序的 UI 线程分离。所以在做复杂动画不需要担心主线程无法处理。
组合不同的位图
很多的 Windows 程序都组合几个渲染技术,如界面菜单使用 GDI 来画,因为画静态 GDI 性能好。画动画使用 D3D 来画,然后把多个渲染进行组合,显示在一个窗口,这时就可以使用 DirectComposition 来组合位图。
如果使用 DirectComposition 就不需要关注不同渲染框架内容重叠时的处理,可以把不同位图渲染在相同的层级或子窗口。
通过集成 DWM 节省内存
实际 DirectComposition 通过集成 DWM 来创建组合位图和动画显示到屏幕,所以使用 DirectComposition 不需要再安装其他的渲染框架。
需要知道的是 DirectComposition 不是基于 DWM 而是集成,而且 DirectComposition 没有渲染元素的能力而是对渲染完成的位图进行组合。
那么 DWM 是什么作用,DWM 实际作用 Windows 组合引擎或合成程序,需要每个窗口把显示的内容给屏外表面或缓冲区,缓冲区是系统给每个顶层窗口分配的,所有的 GDI、D3D、D2D 到先渲染到这里。然后 DWM 决定如何显示,是组合窗口还是做特效,最后再把缓存放到显卡。
兼容原有代码
如果使用 DirectComposition 需要修改之前的界面代码,那么是一个很大的工作,好在使用 DirectComposition 可以支持以前的界面代码。而且 DirectComposition 可以对之前写的界面代码进行组合和动画,从而做出好看的界面。所以可以通过 DirectComposition 对界面进行美化不需要修改原有的代码。
注意,在 Windows 8 和以上的系统才能使用 DirectComposition 的 API 包括在 x86 x64 和 ARM 等系统
2019-3-8-为何使用-DirectComposition的更多相关文章
- 2019年台积电进军AR芯片,将用于下一代iPhone
近日,有报道表示台积电10nm 芯片可怜的收益率可能会对 2017 年多款高端移动设备的推出产生较大的影响,其中自然包括下一代 iPhone 和 iPad 机型.不过,台积电正式驳斥了这一说法,表明1 ...
- VS经常报错的link error 2019
VS经常报错的link error 2019 原因如下: 可能是找得到头文件,但是相关的dll或者lib找不到,需要在配置里面添加相应的库文件. project=>configuration.. ...
- YTU 2019: 鞍点计算
2019: 鞍点计算 时间限制: 1 Sec 内存限制: 64 MB 提交: 66 解决: 30 题目描述 找出具有m行n列二维数组Array的"鞍点",即该位置上的元素在该行 ...
- Windows Server 2019 预览版介绍
在Windows server 2012.Windows server 2016还未完全普及的情况下,昨天Windows Server团队宣布Windows Server 2019将在2018年的下半 ...
- Telerik控件集-2019.R1.SP1.All
Telerik 专注于微软.Net平台的表示层与内容管理控件,提供高度稳定性和丰富性能的组件产品DevCraft,并可应用在非常严格的环境中.Telerik拥有 Microsoft, HP, Alco ...
- CTF丨2019互联网安全城市巡回赛·西安站,我们来了!
万物互联时代,网信事业发展突飞猛进,互联网悄然渗透到国民生活的每一个角落,伴随而来的网络安全威胁和风险也日渐突出.网络诈骗.钓鱼软件.勒索病毒等安全问题层出不穷,信息泄露等网络安全事件也频繁上演,给用 ...
- AI2(App Inventor 2)离线版服务器(2019.04.28更新)
我们的目标:搭建一个本地多用户的App Inventor 2 服务器 演示: http://ai2.fsyz.net [旧 win] http://ai2n.fsyz.net [新 Ce ...
- Adobe Photoshop CC 2019 for Mac v20.0.4 中文版安装教程
全新Adobe Photoshop CC 2019 mac特别版终于上线了,简称ps cc 2019,Adobe Photoshop CC 2019 for Mac v20.0.4 中文版安装教程分享 ...
- Python全国二级等级考试(2019)
一.前言 2018年9月随着全国计算机等级考试科目中加入“二级Python”,也确立了Python在国内的地位,猪哥相信Python语言势必会像PS那般普及.不久的将来,谁会Python谁就能获得女神 ...
- Visual Studio 2019 发布活动 - 2019 年 4 月 2 日
Visual Studio 2019 发布活动 2019 年 4 月 2 日,星期二 | 上午 9:00 (PT) 围观: https://visualstudio.microsoft.com/zh- ...
随机推荐
- 在APPfuse中配置log4j进行定位
appFuse使用log4j进行日志输出,默认日志级别为warn,输出到串口console. 一下修改为debug级别,输出到串口及文件中: 1.修改(tomcat中的页面根目录)/appfuse/W ...
- Leetcode744.Find Smallest Letter Greater Than Target寻找比目标字母大的最小字母
给定一个只包含小写字母的有序数组letters 和一个目标字母 target,寻找有序数组里面比目标字母大的最小字母. 数组里字母的顺序是循环的.举个例子,如果目标字母target = 'z' 并且有 ...
- 关于Apple Watch,听听开发了两个月Watch App的工程师怎么说
今年1月份有幸应苹果邀请,秘密参与苹果 Watch App 的真机现场调试.4月份,Apple Watch 会正式上市.在这之前,也算是亲自抢先体验了 Apple Watch,以及开发了一下 Watc ...
- 利用backtrace和ucontex定位segment错误
C程序运行时,经常会碰到"segmentfault"错误.这是由于程序中非法访问内存导致的.当操作系统的内存保护机制发现进程访问了非法内存的时候会向此进程发送一个SIGSEGV信号 ...
- 基于Tablestore Tunnel的数据复制实战
前言 数据复制主要指通过互联的网络在多台机器上保存相同数据的副本,通过数据复制方案,人们通常希望达到以下目的:1)使数据在地理位置上更接近用户,进而降低访问延迟:2)当部分组件出现故障时,系统依旧可以 ...
- Implement strStr() 字符串匹配
Implement strStr(). Returns the index of the first occurrence of needle in haystack, or -1 if needle ...
- selenium 图片上传
WebElement file = driver.findElement(By.name("filename")); 给此元素设置值:file.sendKeys("E: ...
- Laravel / PHP 扩展包视频教程
https://laravel-china.org/courses/laravel-package 每周精选两个以上扩展包进行讲解,涵盖 PHP 和 Laravel 相关的最新.最热.最常用的扩展包. ...
- @总结 - 10@ Miller-Rabin素性测试与Pollard-Rho因数分解
目录 @1 - 素性测试:Miller-Rabin算法@ @1.1 - 算法来源@ @1.2 - 算法描述@ @1.3 - 算法实现@ @2 - 因数分解:Pollard-Rho算法@ @2.0 - ...
- 实验4 JavaBean创建和使用(计算器)
实验4 JavaBean创建和使用 一.实验目的 1.掌握JavaBean创建和使用方法: 2.领会JavaBean简化页面设计的优势等. 二.实验内容 1.设计诸如以下页面的简单计算器 要求:完成 ...