乐趣区

关于openharmony:新的图形框架可以带来什么-揭秘OpenHarmony新图形框架

3 月 30 日,OpenHarmony v3.1 Release 版本正式公布了。此版本为大家带来了全新的图形框架,实现了 UI 框架显示、多窗口、晦涩动画等根底能力,夯实了 OpenHarmony 零碎能力基座。上面就带大家具体理解新图形框架。

一、残缺能力视图

新图形框架的能力在继续构建中,图 1 展现了新图形框架以后及将来提供的残缺能力视图。

图 1 OpenHarmony 图形残缺能力视图

依照分层形象和轻模块化的架构设计准则,新图形框架分为接口层、架构层和引擎层。各层级阐明如下:

接口层:提供图形 NDK(native development kit,原生开发包)能力,包含 OpenGL ES、Native Drawing 等绘制接口能力。

框架层:由 Render Service、Animation、Effect、Drawing、显示与内存治理等外围模块组成。框架层各模块阐明如下:

引擎层:包含 2D 图形库和 3D 图形引擎两个模块。2D 图形库提供 2D 图形绘制底层 API,反对图形绘制与文本绘制底层能力。3D 图形引擎能力尚在构建中。

二、新图形框架的亮点

通过上一节介绍,咱们对新图形框架的残缺能力有了根本的理解。那么,新图形框架有什么亮点呢?

新图形框架在渲染、动画流畅性、接口方面重点发力:

(1)渲染方面

通常来讲,UI 界面显示分为两个局部:一是形容的 UI 元素在利用外部显示,二是多个利用的界面在屏幕上同时显示。对此,新图形框架从性能上做了相应的设计:控件级渲染 窗口级渲染。“控件级渲染”重点思考如何跟 UI 框架前端进行对接,须要将 ArkUI 框架的控件形容转换成绘制指令,并提供对应的节点治理以及渲染能力。而“窗口级渲染”重点思考如何将多个利用合成显示到同一个屏幕上。

(2)动画流畅性方面

咱们深挖动画解决流程中的各个环节,对新图形框架进行了新的动画实现设计,晋升动画的流畅性体验。

(3)接口方面

新图形框架在接口层提供了更丰盛的接口能力。

上面为大家一一具体介绍新图形框架的亮点个性。

1. 控件级渲染

新图形框架实现了基于 RenderService(简称 RS)的控件级渲染性能,如图 2 所示。

图 2 控件级渲染

控件级渲染性能具备以下特点:

● 反对 GPU 渲染,晋升渲染性能。

● 动画逻辑从主线程中剥离,提供独立的步进驱动机制。

● 将渲染节点属性化,属性与内容拆散。

2. 窗口级渲染

新图形框架实现了基于 RenderService 的窗口级渲染性能,如图 3 所示。

图 3 窗口级渲染

窗口级渲染性能具备以下特点:

● 取代 Weston 合成框架,实现 RS 新合成框架。

● 反对硬件 VSync/ 软件 Vsync。

● 反对基于 NativeWindow 接入 EGL/GLES 的能力。

● 更灵便的合成形式,反对硬件在线合成 /CPU 合成 / 混合合成(GPU 合成行将上线)。

● 反对多媒体图层在线 overlay。

3. 更晦涩的动画体验

动画流畅性是一项很根本、也很要害的个性,间接影响用户体验。为了晋升动画的流畅性体验,咱们深挖动画解决流程中的各个环节,对新图形框架进行了新的动画实现设计。

如图 4 所示,传统动画的实现流程如下:

(1)利用创立动画,设置动画参数。

(2)每帧回调,批改控件参数,从新测量、布局、绘制。

(3)内容渲染。

图 4 传统动画实现

通过深入分析,咱们发现传统动画实现存在以下毛病:

(1)UI 与动画一起执行,UI 的业务阻塞会影响动画的执行,导致动画卡顿。

(2)每帧回调批改控件属性,会触发测量布局录制,导致耗时减少。

针对以上两点缺点,咱们对新图形框架进行了新的动画实现设计,如图 5 所示。

图 5 新框架的动画实现

(1)动画与 UI 拆散。

动画在渲染线程步进,与 UI 业务线程拆散。

(2)动画仅测量、布局、绘制一次,升高动画负载。

通过计算最终界面属性值,对有扭转的控件增加动画,动画过程中不测量、布局、绘制,晋升性能。

4. 对外提供的接口

新图形框架提供了丰盛的接口:

(1)SDK:反对 WebGL 1.0、WebGL 2.0,满足 JS 开发者的 3D 开发的需要。

WebGL 开发领导:

https://docs.openharmony.cn/p…,%E7%9D%80%E8%89%B2%E5%99%A8%E7%BB%98%E5%88%B6%E5%BD%A9%E8%89%B2%E4%B8%89%E8%A7%92%E5%BD%A2,-%E6%AD%A4%E5%9C%BA%E6%99%AF%E4%B8%BA

(2)NDK:反对 OpenGL ES3.X,能够通过 XComponent 提供的 nativewindow 创立 EGL/OPENGL 绘制环境,满足游戏引擎等开发者对 3D 绘图能力的需要。

图 6 OpenGL ES 应用示例

新图形框架还处于不断完善过程中,咱们将基于新框架提供更多的能力,置信当前会给大家带来更多的惊喜,敬请期待~

退出移动版