您当前的位置:首页 > 电脑百科 > 程序开发 > 移动端 > 鸿蒙

全球首发:鸿蒙开源平台OpenGL

时间:2021-02-22 13:01:56  来源:  作者:

基于Android/ target=_blank class=infotextkey>安卓平台的 OpenGL(http://androidxref.com/9.0.0_r3/),实现功能的鸿蒙化迁移和重构,全球首发鸿蒙平台的 OpenGL-ISRC,代码已经开源,欢迎各位下载使用并提出宝贵意见!

全球首发:鸿蒙开源平台OpenGL

开源代码:

https://gitee.com/iscas-ohos/OpenGL_ISRC/tree/main

01背景

OpenGL(Open Graphics Library)是用于渲染 2D、3D 矢量图形的跨语言、跨平台的应用程序编程接口(API),可绘制从简单的图形到复杂的三维景象,操作在 GPU 之上,实现硬件加速渲染 。

目前,Microsoft、SGI、IBM、DEC、SUN、HP 等大公司都采用了 OpenGL 做为三维图形标准。

著名的动画制作软件 Soft Image 和 3D Studio MAX、仿真软件 Open Inventor、VR 软件 World Tool Kit、CAM 软件 ProEngineer、GIS 软 ARC/INFO 等等都是以 OpenGL 为基础制作完成的。

OpenGL 是个与硬件无关的软件接口,可以在不同的平台之间移植。

OpenGLES 是 OpenGL 的高性能版本,删减了其中的低效能的操作方式,Android 就是使用的这种标准,因此鸿蒙平台的 OpenGL-ISRC 也是使用的这种标准。

02鸿蒙 OpenGL-ISRC 的结构

全球首发:鸿蒙开源平台OpenGL

 

①Android 的 OpenGL 库

全球首发:鸿蒙开源平台OpenGL

 

②Harmony 的 OpenGL-ISRC 库

全球首发:鸿蒙开源平台OpenGL

 

③Harmony 的 OpenGL 库

由图 1,OpenGL 库对比可知,OpenGL-ISRC 整体的结构和 Android OpenGL 类似。

不同之处在于 OpenGL-ISRC 由两个包组成,分别是 android.opengl 和 ohos.opengl。

android.opengl 里放置的是目前支持版本的 OpenGLES 标准,ohos.opengl 放置的是常用的图像处理类。且类的数量少于 Android 的 OpenGL。

下面对这几点给出解释:

①为什么其中一个包名是 android.opengl?

采用 C++ 实现接口的方式,通过 so 库的调用实现接口的调用。对于目前支持版本的 OpenGLES 标准这部分,Android 已经开源了其生成的 so 库。

为了避免功能重复开发,此处直接使用 Android 的 so 库,因此包名必须是 android.opengl。

②OpenGL-ISRC 为什么由两个包组成?

对于图像处理类的实现,若继续采用 Android so 库调用的方式,需要将图像处理类放置于 android.opengl 包下。

此时运行鸿蒙环境,会出现方法声明重复的错误,见图 2,表明图像处理类中的方法与鸿蒙底层存在的某些方法存在冲突,因此继续使用 Android so 库调用的方式不再可行。

全球首发:鸿蒙开源平台OpenGL

图 2:图像处理类放置于 android.opengl 包下的报错情况

在 OpenGL-ISRC 中,图像处理类这一部分,依旧采用 C++ 实现接口,通过 so 库调用实现接口调用的方式。

与 android.opengl 里的类不同的是,我们对图像处理的类的接口进行了鸿蒙化的移植重构,生成了全新的 so 库进行调用,适配了鸿蒙底层的环境,也避免了此处对安卓的依赖。

③OpenGL-ISRC 为什么缺少 EGL 类?

鸿蒙 SDK 自带 OpenGL 库,见图1.(3),内部含有 EGL 类。OpenGL-ISRC 是基于鸿蒙平台,所以直接使用了鸿蒙 SDK 自带 OpenGL 库的 EGL 类,避免了功能的重复开发。

④OpenGL-ISRC 中的 GLSuefaceprovider

OpenGL-ISRC 中的 GLSuefaceProvider 在功能上和 Android 的 GLSurfaceView 相同。

因为鸿蒙中的 SurfaceView 命名为 SuefaceProvider,根据命名一致原则,OpenGL-ISRC 中的 GLSurfaceView 命名为 GLSuefaceProvider。

03与鸿蒙 SDK OpenGL 的区别

OpenGL-ISRC 是鸿蒙开源系统的功能相对完整的 OpenGL ES 库。从使用上来说,OpenGL-ISRC 具有较大的独立性,与鸿蒙 SDK OpenGL 在实现方式、完善程度、功能提供等方面都存在较大不同。

OpenGL-ISRC 采用 C++ 实现接口,通过 so 库调用实现接口调用的方式,而鸿蒙 SDK OpenGL 的接口采用 JAVA 实现的方式,二者的使用较为独立,不存在冲突。

图1,(2)和(3)的对比中可以看出,OpenGL-ISRC 的所提供的功能是相对完善的,鸿蒙 SDK OpenGL 目前还缺少很多标准类,已存在的标准类内部功能也有不完整的现象。

OpenGL-ISRC 封装使用了鸿蒙 SDK OpenGL 的 EGL 类,避免功能重复开发,因此二者是互相完善的关系。

由于鸿蒙 SDK OpenGL 的不完整性,OpenGL-ISRC 支持的 OpenGLES 标准类的实现使用了安卓 so 库的调用,没有使用鸿蒙 SDK OpenGL 的 OpenGLES 标准。

04OpenGL-ISRC 的使用

①GlSurfaceProvider 的使用示例

此处创建了 GlSurfaceProvider 控件,add 到 layout 中进行显示,如图 3 所示。

为了增强 GlSurfaceProvider 的可视化效果,在 GlRenderer 里面设置了一个红色的三角图形。

全球首发:鸿蒙开源平台OpenGL

图 3 :GlSurfaceProvider 的使用 demo

三角具体属性见开源代码:https://gitee.com/iscas-ohos/OpenGL_ISRC/tree/main,显示效果如图 4 所示。

全球首发:鸿蒙开源平台OpenGL

图 4 :GlSurfaceProvider 显示效果

②EGL 和 ETC1 的使用示例

为了验证了 EGL 的显示效果,在 initView() 方法中给 Viewport 设置了紫色方块视图属性,见开源代码:

https://gitee.com/iscas-ohos/OpenGL_ISRC/tree/main

为了验证 ETC1 的有效性,将 ETC1.getEncodedDataSize() 的结果输出到一个 Text 中进行显示。

当 EGL 显示紫色方块,Text 上显示 ETC1.getEncodedDataSize() 的结果时,证明 EGL 和 ETC1 类可成功使用,二者的显示效果如图 6 所示。

全球首发:鸿蒙开源平台OpenGL

图 5:EGL 和 ETC1 的使用 demo


全球首发:鸿蒙开源平台OpenGL

图 6:EGL 的显示效果、ETC1 的输出效果

作者: 小雪糕123

原文链接:https://mp.weixin.qq.com/s/otCLR0n4d23lxDB0L0Il5A



Tags:鸿蒙   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
华为手机的智慧生活估计大家都不陌生,那它到底有什么智慧功能呢?其实华为手机智慧生活可以通过简单的设置,就能控制你家里的电器,非常方便。华为手机通过绑定三方平台账号建立连...【详细内容】
2022-07-08  Tags: 鸿蒙  点击:(10)  评论:(0)  加入收藏
近日HarmonyOS 3.0开发者Beta正式推送,不少网友都收到了鸿蒙3.0开发者申请通过的通知。根据此前招募公告来看,支持此次升级的测试的设备包括:华为P50、P50 Pro、P50 Pocket、Ma...【详细内容】
2022-07-06  Tags: 鸿蒙  点击:(19)  评论:(0)  加入收藏
消息称华为鸿蒙OS 3.0正式版系统将在7月下旬正式推送,而首批适配机型也正式公布,其中包括:华为P50系列、Mate 40系列、和Mate 50系列,平板方面只有华为MatePad Pro 12.6英寸2021...【详细内容】
2022-06-30  Tags: 鸿蒙  点击:(33)  评论:(0)  加入收藏
根据小编之前有关鸿蒙的文章评论,耗电快是鸿蒙系统遇到的最多的问题。事实上无论是Android还是iOS,如果不能正确使用和对系统进行优化设置,都会出现较为严重的好点情况。下面小...【详细内容】
2022-06-23  Tags: 鸿蒙  点击:(38)  评论:(0)  加入收藏
智能手机发展到今天,大家几乎人手一部。 智能手机从功能机发展而来,之所以说它“智能”,是因为它可以安装各种APP,跳出了功能机原本的通信功能,拥有无限的可能性。 但大家又常常...【详细内容】
2022-06-21  Tags: 鸿蒙  点击:(57)  评论:(0)  加入收藏
机哥想起,大概是四五年前,安卓手机玩家流行过一阵子,利用各种主题、启动器、插件,来模拟出iOS系统的味道。 谁能想到,现在风水轮流转,轮到iPhone玩家想把手机搞成安卓了。 尤其是...【详细内容】
2022-06-21  Tags: 鸿蒙  点击:(76)  评论:(0)  加入收藏
今天为大家带来的是,华为鸿蒙系统的功能,让你实现控制中心可以快速打开你的健康码,因为现在疫情的原因出门需要健康码,每次点开都很麻烦,今天我教教大家如何快速的实现,打开自己的...【详细内容】
2022-06-16  Tags: 鸿蒙  点击:(73)  评论:(0)  加入收藏
IT之家 6 月 15 日消息,据华为官网消息,鸿蒙 HarmonyOS 3.0 开发者 Beta 版本已开启公测招募。据官方介绍,HarmonyOS 3.0 开发者 Beta 版极大增强 JS / eTS 语言应用开发能力,同...【详细内容】
2022-06-15  Tags: 鸿蒙  点击:(21)  评论:(0)  加入收藏
近一段时间,几个事情又将华为拉到了大家的眼前,一个是华为终于要出新机了,华为Nova10系列已经得到官宣,预计六月底上市,还有就是华为mate50系列的消息越来越多,从曝光的消息来看发...【详细内容】
2022-06-14  Tags: 鸿蒙  点击:(98)  评论:(0)  加入收藏
一、华为持有股份的"中国软件国际":国元国际发布最新研报:中国软件国际(0354.HK)作为华为同舟共济合作伙伴,韧性成长。公司在云智能、鸿蒙、智能汽车等数字化领域新业务发展迅速,...【详细内容】
2022-06-14  Tags: 鸿蒙  点击:(38)  评论:(0)  加入收藏
▌简易百科推荐
近日,HarmonyOS 2推出全新版本,本次带来了AI隐私保护、图库、服务中心等众多特性新升级,欢迎大家体验。 鸿蒙系统现在越来越完善,适配的机型也越来越多,大家赶快看看自己的机...【详细内容】
2022-05-11  中关村在线    Tags:鸿蒙系统   点击:(105)  评论:(0)  加入收藏
在开始本章正式内容之前先补充讲一下前面章节没有讲到的一个小细节问题。在我们每次关闭DevEco Studio不要直接点击右上角的关闭按钮,而是选择菜单“文件 > 关闭项目” 这样...【详细内容】
2022-04-12  李景能    Tags:JavaScript UI   点击:(222)  评论:(0)  加入收藏
下载开发工具:https://developer.harmonyos.com从链接 https://developer.harmonyos.com/cn/docs/documentation/doc-guides/document-outline-0000001064589184获得开发指南...【详细内容】
2022-02-16  活力行动    Tags:HarmonyOS   点击:(118)  评论:(0)  加入收藏
今天继续分享有关 HarmonyOS 系统的开发组件布局类的知识,我们将在此系统上进行 App 应用开发,主要内容是讲常用的组件布局类有哪些以及它们的使用方式。分享的逻辑是先学习布...【详细内容】
2022-02-07  Candy.W    Tags:HarmonyOS   点击:(113)  评论:(0)  加入收藏
今天我们来谈谈当下最火爆的万物互联的操作系统—Harmony OS,这是国人的骄傲,也是每一个中华儿女值得去学习和研究的国产操作系统。在这里主要是想通过自己所写的一个小...【详细内容】
2022-02-04  Candy.W    Tags:HarmonyOS   点击:(266)  评论:(0)  加入收藏
百度地图开放平台现在也开始推出自己的HarmonyOS地图SDK轻量版,这表示我们的百度地图开发者也能在HarmonyOS系统开发环境中接入百度地图的地图服务功能,而且安卓开发工程师也...【详细内容】
2021-12-30  猪小P数码空间    Tags:鸿蒙APP   点击:(440)  评论:(0)  加入收藏
在上一篇帖子《使用Python开发鸿蒙设备程序(1-GPIO外设控制)》中,已经成功的使用 Python 对 GPIO 上的外设进行了控制。这其实不是什么大不了的事,从功能的角度也着实不值得炫耀...【详细内容】
2021-09-23  鸿蒙开发者老王  微信公众号  Tags:开发鸿蒙   点击:(208)  评论:(0)  加入收藏
鸿蒙编程要用到Java,现在还是菜鸟阶段,先练基础吧。而且白天要工作,只能晚上学习,希望能坚持下去。根据教程,这次提供了一个for语句,以前大学时学过,感觉应该比较简单,先打开记事本...【详细内容】
2021-06-25  浮云终散尽    Tags:鸿蒙系统   点击:(293)  评论:(0)  加入收藏
华为开发者大会已经结束不久,我想大家应该都知道鸿蒙系统是基于什么语言开发的了。实际上大部分操作系统的开发基本上离不开C/C++、汇编语言、Java这三种编程语言。不过,我相...【详细内容】
2021-06-24  鸿蒙开发者老王    Tags:鸿蒙OS   点击:(271)  评论:(0)  加入收藏
鸿蒙开始于 2012 年,虽一开始定位于物联网方向,但到如今,已经发展为一款可兼容 Android 应用的跨平台操作系统. 最新的 2.0 的官方描述是: HarmonyOS 是新一代的智能终端操...【详细内容】
2021-06-18  燚磕工作室    Tags:HarmonyOS   点击:(592)  评论:(0)  加入收藏
站内最新
站内热门
站内头条