为何使用 DirectComposition 创建更加迷人的界面流畅丰富的动画组合不同的位图通过集成 DWM 节省内存兼容原有代码

本文主要翻译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 对界面进行美化不需要修改原有的代码。

参见:Why use DirectComposition


本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏HTML5学堂

metahandler.js——移动端适配各种屏幕无痛工具脚本

移动端H5知识[系列] - 固定像素的实现方法 HTML5学堂:随着对移动端的探索,而今我们逐渐形成了“横向百分比,纵向rem”。日前看网易对移动端的操作,发现...

54111
来自专栏黑泽君的专栏

打造自己的博客园页面

刚接触博客园时,总有一种要定制打造自己博客页面的冲动,后来感觉原有的模板足够了(博客园提供了大量的模板),没有做这项工作。今天不太忙,稍微研究了下博客园的页面定...

1693
来自专栏我有一个梦想

UE4新手编程之创建C++项目

 虚幻4中常用的按键和快捷键 虚幻4中有一些按键和快捷键很常用,牢记它们并运动到实际的项目开发中,将会大大地提高你的工作效率和使得工作更简便快捷。下面将列举它们...

2476
来自专栏我和未来有约会

令人激动的silverlight 3行为(behavior)效果

令人激动的silverlight 3行为(behaviors)效果 Mix09大会带来了很多的惊喜。 看完了http://videos.visitmix.com...

2975
来自专栏前端大白专栏

react 在使用数据请求的时候和setState的时候哪个先处理

1955
来自专栏葡萄城控件技术团队

Web程序员们,你准备好迎接HTML5了吗?

HTML5作为下一代的web开发标准,其特性已经慢慢地出现在主流的浏览器中,这种新的HTML将会让浏览器不必再依赖Flash、QuickTime、Silverl...

2199
来自专栏ytkah

微信小程序开发教程第五章:微信小程序名片夹详情页开发

今天加了新干货!除了开发日志本身,还回答了一些朋友的问题。 闲话不多说,先看下「名片盒」详情页的效果图: ? ? 备注下大致需求:顶部背后是轮播图,二维码...

3738
来自专栏前端杂货铺

关于首屏时间采集自动化的解决方案

关于首屏 首屏时间是指从转向该页面到屏幕中该页面所有内容都可见时的时间。已经有太多的关于首屏时间的计算,在本文中并不重复阐述这些已经被提出或者实现的方案,而旨...

5207
来自专栏分布式系统和大数据处理

Web标准中的常见问题

大概在2004年的时候,Web标准的概念藉由一本名为《网站重构》的书开始被国内人所了解。随后的几年中,其更少的代码量、更好的搜索引擎友好性、更好的浏览器兼容性使...

1065
来自专栏我和我大前端的故事

2018 我所了解的 Vue 知识大全(一)

Vue ,React ,Angular 三大主流框架,最后我选择学习 Vue ,接触过 React ,自己感觉学习曲线有些陡峭,进而我选择了学习 Vue ,他的...

983

扫码关注云+社区

领取腾讯云代金券