0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一文详细了解OpenHarmony新图形框架

科技观点 来源:科技观点 作者:科技观点 2022-04-27 13:21 次阅读

原标题:新的图形框架可以带来什么? 揭秘OpenHarmony新图形框架

3月30日,OpenHarmony v3.1 Release版本正式发布了。此版本为大家带来了全新的图形框架,实现了UI框架显示、多窗口、流畅动画等基础能力,夯实了OpenHarmony系统能力基座。下面就带大家详细了解新图形框架。

一、完整能力视图

新图形框架的能力在持续构建中,图1展示了新图形框架当前及未来提供的完整能力视图。

pYYBAGJo0sOAX7UoAACkvMapH2o971.png

图1 OpenHarmony图形完整能力视图

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

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

框架层:由Render Service、Animation、Effect、Drawing、显示与内存管理等核心模块组成。框架层各模块说明如下:

poYBAGJo0sSATwJIAADQgha1iqg254.png

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

二、新图形框架的亮点

经过上一节介绍,我们对新图形框架的完整能力有了基本的了解。那么,新图形框架有什么亮点呢?

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

(1)渲染方面

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

(2)动画流畅性方面

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

(3)接口方面

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

下面为大家一一详细介绍新图形框架的亮点特性。

1. 控件级渲染

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

pYYBAGJo0sSASj0fAAAnyZurLSw811.png

图2 控件级渲染

控件级渲染功能具有以下特点:

● 支持GPU渲染,提升渲染性能。

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

● 将渲染节点属性化,属性与内容分离。

2. 窗口级渲染

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

poYBAGJo0sSAJBjOAAAn2v6yWwM569.png

图3 窗口级渲染

窗口级渲染功能具有以下特点:

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

● 支持硬件VSync/软件Vsync。

● 支持基于NativeWindow接入EGL/GLES的能力。

● 更灵活的合成方式,支持硬件在线合成/CPU合成/混合合成(GPU合成即将上线)。

● 支持多媒体图层在线overlay。

3. 更流畅的动画体验

动画流畅性是一项很基本、也很关键的特性,直接影响用户体验。为了提升动画的流畅性体验,我们深挖动画处理流程中的各个环节,对新图形框架进行了新的动画实现设计。

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

(1) 应用创建动画,设置动画参数

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

(3) 内容渲染。

pYYBAGJo0sSAJtdRAAAxxTTKYRQ355.png

图4 传统动画实现

经过深入分析,我们发现传统动画实现存在以下缺点:

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

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

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

poYBAGJo0sWADMpfAAAwFuiHhRQ136.png

图5 新框架的动画实现

(1)动画与UI分离。

动画在渲染线程步进,与UI业务线程分离。

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

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

4. 对外提供的接口

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

(1)SDK:支持WebGL 1.0、WebGL 2.0,满足JS开发者的3D开发的需求。

WebGL开发指导:

https://docs.openharmony.cn/pages/zh-cn/app/%E5%BA%94%E7%94%A8%E5%BC%80%E5%8F%91%E6%96%87%E6%A1%A3/%E5%BC%80%E5%8F%91/%E5%9F%BA%E7%A1%80%E5%8A%9F%E8%83%BD%E5%BC%80%E5%8F%91/WebGL/WebGL%E5%BC%80%E5%8F%91%E6%8C%87%E5%AF%BC/#:~:text=%23-,%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绘图能力的需求。

poYBAGJo0sWALnoBAACDtHBHPF0066.png

图6 OpenGL ES使用示例

新图形框架还处于不断完善过程中,我们将基于新框架提供更多的能力,相信以后会给大家带来更多的惊喜,敬请期待。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 图形
    +关注

    关注

    0

    文章

    71

    浏览量

    19335
  • OpenHarmony
    +关注

    关注

    25

    文章

    3744

    浏览量

    16515
收藏 人收藏

    评论

    相关推荐

    OpenHarmony程序分析框架论文入选ICSE 2025

      近日,ICSE 2025软件工程实践Track放榜,面向OpenAtom OpenHarmony(以下简称“OpenHarmony”)的ArkTS程序分析基础框架--方舟程序分析器(论文题目为
    的头像 发表于 01-02 13:41 206次阅读
    <b class='flag-5'>OpenHarmony</b>程序分析<b class='flag-5'>框架</b>论文入选ICSE 2025

    详细了解骁龙8至尊版强大的AI能力

    强大的AI性能加持下,可支持个性化的多模态AI助手,并为终端设备带来全面焕新的AI影像和丰富有趣的AI游戏体验。下面,就让我们详细了解骁龙8至尊版强大的AI能力。 全面升级的AI性能 早在第三代骁龙8移动平台上,高通已将高性能AI注入整个
    的头像 发表于 12-24 11:47 689次阅读
    <b class='flag-5'>详细了解</b>骁龙8至尊版强大的AI能力

    高校暑期实践活动圆满结束

    产线车间,详细了解智能屏从设计到生产全流程,了解自主设计研发的人机交互专用ASIC在工业自动化、医疗器械、美容保健、智慧家居及家电、新能源等行业领域的应用案例
    的头像 发表于 09-03 08:02 379次阅读
    迪<b class='flag-5'>文</b>高校暑期实践活动圆满结束

    OpenHarmony之开机优化

    对其进行详细的性能分析,从而优化系统启动速度和运行效率。 三丶开机优化 开机优化的主要目的是为了快速启动开机动画和退出开机动画(显示桌面)。所以在优化之前,我们需要了解OpenHarmon
    发表于 07-01 16:39

    带你详细了解工业电脑

    扇设计、承受振动和恶劣环境的能力、轻松配置、全面的I/O选项、延长生命周期、耐用的组件。了解如何为您的应用选择工业电脑对提高设施的生产力和效率至关重要。详细了解
    的头像 发表于 06-12 14:24 478次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b>带你<b class='flag-5'>详细了解</b>工业电脑

    OpenHarmony 成功亮相国际学术会议 ASPLOS 2024

    举行的ASPLOS 2024上成功举办。本次学术教程会以“OpenHarmony操作系统的关键特性与能力”为主题,聚焦“基于OpenHarmony的前沿学术探索机遇与挑战“,详细介绍了
    的头像 发表于 05-16 09:28 483次阅读
    <b class='flag-5'>OpenHarmony</b> 成功亮相国际学术会议 ASPLOS 2024

    鸿蒙开发:【OpenHarmony 4.0 Release指导】

    OpenHarmony 4.0版本如期而至,开发套件同步升级到API 10。相比3.2 Release版本,新增4000多个API,应用开发能力更加丰富;HDF新增200多个HDI接口,硬件适配更加便捷;我们持续优化图形框架和方
    的头像 发表于 05-14 09:59 1613次阅读
    鸿蒙开发:【<b class='flag-5'>OpenHarmony</b> 4.0 Release指导】

    鸿蒙开发图形图像:【图形子系统】

    图形子系统主要包括UI组件、布局、动画、字体、输入事件、窗口管理、渲染绘制等模块,构建基于轻量OS应用框架满足硬件资源较小的物联网设备或者构建基于标准OS的应用框架满足富设备的OpenHarm
    的头像 发表于 03-23 16:50 693次阅读
    鸿蒙开发<b class='flag-5'>图形</b>图像:【<b class='flag-5'>图形</b>子系统】

    【六】Purple Pi OH开发板带你7天入门OpenHarmony

    今天我们来从OpenHarmony简介、环境搭建、创建第OpenHarmony项目等方面开始OpenHarmony应用开发的第步。
    的头像 发表于 03-14 08:31 587次阅读
    【六】Purple Pi OH开发板带你7天入门<b class='flag-5'>OpenHarmony</b>!

    介绍种OpenAtom OpenHarmony轻量系统适配方案

    本文在不改变原有系统基础框架的基础上, 介绍了种OpenAtom OpenHarmony(以下简称“OpenHarmony”)轻量系统适配方案。
    的头像 发表于 03-05 09:24 1262次阅读
    介绍<b class='flag-5'>一</b>种OpenAtom <b class='flag-5'>OpenHarmony</b>轻量系统适配方案

    OpenHarmony4.0源码解析之媒体框架

    及 audio-source 插件调用音频框架的播放及采集功能来实现音频的播放与录制;通过 surface-sink 调用图形框架,video-decoder 调用解码驱动模
    的头像 发表于 02-26 22:05 1087次阅读
    <b class='flag-5'>OpenHarmony</b>4.0源码解析之媒体<b class='flag-5'>框架</b>

    【鸿蒙】OpenHarmony 4.0蓝牙代码结构简析

    OpenHarmony 4.0蓝牙代码结构简析前言 OpenHarmony 4.0上蓝牙仓和目录结构进行次较大整改,本文基于4.0以上版本对蓝牙代码进行分析,便于读者快速了解和学习
    的头像 发表于 02-26 16:08 1680次阅读
    【鸿蒙】<b class='flag-5'>OpenHarmony</b> 4.0蓝牙代码结构简析

    pcb应变测试有多重要?了解

    pcb应变测试有多重要?了解
    的头像 发表于 02-24 16:26 1167次阅读

    Qt For OpenHarmony图形化的进展突破

    Qt 适配 OpenHarmony 意义 Qt 是个 C++ 跨平台开发框架,主要用于开发图形用户界面(Graphical User Interface,GUI)程序,具有跨平台类库
    的头像 发表于 02-02 14:29 1653次阅读
    Qt For <b class='flag-5'>OpenHarmony</b><b class='flag-5'>图形</b>化的进展突破

    OpenHarmony 之 NAPI 框架介绍

    环境中的 JS 变量与方法。 OpenHarmony 中的 NAPI OpenAtom OpenHarmony(以下简称 “OpenHarmony”)应用层基于 javascript 语言开发,而系统
    的头像 发表于 02-01 17:34 755次阅读
    <b class='flag-5'>OpenHarmony</b> 之 NAPI <b class='flag-5'>框架</b>介绍