亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

基于Android/ target=_blank class=infotextkey>安卓平臺的 OpenGL(http://androidxref.com/9.0.0_r3/),實現(xiàn)功能的鴻蒙化遷移和重構(gòu),全球首發(fā)鴻蒙平臺的 OpenGL-ISRC,代碼已經(jīng)開源,歡迎各位下載使用并提出寶貴意見!

全球首發(fā):鴻蒙開源平臺OpenGL

開源代碼:

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

01背景

OpenGL(Open Graphics Library)是用于渲染 2D、3D 矢量圖形的跨語言、跨平臺的應(yīng)用程序編程接口(API),可繪制從簡單的圖形到復(fù)雜的三維景象,操作在 GPU 之上,實現(xiàn)硬件加速渲染 。

目前,Microsoft、SGI、IBM、DEC、SUN、HP 等大公司都采用了 OpenGL 做為三維圖形標(biāo)準(zhǔn)。

著名的動畫制作軟件 Soft Image 和 3D Studio MAX、仿真軟件 Open Inventor、VR 軟件 World Tool Kit、CAM 軟件 ProEngineer、GIS 軟 ARC/INFO 等等都是以 OpenGL 為基礎(chǔ)制作完成的。

OpenGL 是個與硬件無關(guān)的軟件接口,可以在不同的平臺之間移植。

OpenGLES 是 OpenGL 的高性能版本,刪減了其中的低效能的操作方式,Android 就是使用的這種標(biāo)準(zhǔn),因此鴻蒙平臺的 OpenGL-ISRC 也是使用的這種標(biāo)準(zhǔn)。

02鴻蒙 OpenGL-ISRC 的結(jié)構(gòu)

全球首發(fā):鴻蒙開源平臺OpenGL

 

①Android 的 OpenGL 庫

全球首發(fā):鴻蒙開源平臺OpenGL

 

②Harmony 的 OpenGL-ISRC 庫

全球首發(fā):鴻蒙開源平臺OpenGL

 

③Harmony 的 OpenGL 庫

由圖 1,OpenGL 庫對比可知,OpenGL-ISRC 整體的結(jié)構(gòu)和 Android OpenGL 類似。

不同之處在于 OpenGL-ISRC 由兩個包組成,分別是 android.opengl 和 ohos.opengl。

android.opengl 里放置的是目前支持版本的 OpenGLES 標(biāo)準(zhǔn),ohos.opengl 放置的是常用的圖像處理類。且類的數(shù)量少于 Android 的 OpenGL。

下面對這幾點給出解釋:

①為什么其中一個包名是 android.opengl?

采用 C++ 實現(xiàn)接口的方式,通過 so 庫的調(diào)用實現(xiàn)接口的調(diào)用。對于目前支持版本的 OpenGLES 標(biāo)準(zhǔn)這部分,Android 已經(jīng)開源了其生成的 so 庫。

為了避免功能重復(fù)開發(fā),此處直接使用 Android 的 so 庫,因此包名必須是 android.opengl。

②OpenGL-ISRC 為什么由兩個包組成?

對于圖像處理類的實現(xiàn),若繼續(xù)采用 Android so 庫調(diào)用的方式,需要將圖像處理類放置于 android.opengl 包下。

此時運行鴻蒙環(huán)境,會出現(xiàn)方法聲明重復(fù)的錯誤,見圖 2,表明圖像處理類中的方法與鴻蒙底層存在的某些方法存在沖突,因此繼續(xù)使用 Android so 庫調(diào)用的方式不再可行。

全球首發(fā):鴻蒙開源平臺OpenGL

圖 2:圖像處理類放置于 android.opengl 包下的報錯情況

在 OpenGL-ISRC 中,圖像處理類這一部分,依舊采用 C++ 實現(xiàn)接口,通過 so 庫調(diào)用實現(xiàn)接口調(diào)用的方式。

與 android.opengl 里的類不同的是,我們對圖像處理的類的接口進(jìn)行了鴻蒙化的移植重構(gòu),生成了全新的 so 庫進(jìn)行調(diào)用,適配了鴻蒙底層的環(huán)境,也避免了此處對安卓的依賴。

③OpenGL-ISRC 為什么缺少 EGL 類?

鴻蒙 SDK 自帶 OpenGL 庫,見圖1.(3),內(nèi)部含有 EGL 類。OpenGL-ISRC 是基于鴻蒙平臺,所以直接使用了鴻蒙 SDK 自帶 OpenGL 庫的 EGL 類,避免了功能的重復(fù)開發(fā)。

④OpenGL-ISRC 中的 GLSuefaceprovider

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

因為鴻蒙中的 SurfaceView 命名為 SuefaceProvider,根據(jù)命名一致原則,OpenGL-ISRC 中的 GLSurfaceView 命名為 GLSuefaceProvider。

03與鴻蒙 SDK OpenGL 的區(qū)別

OpenGL-ISRC 是鴻蒙開源系統(tǒng)的功能相對完整的 OpenGL ES 庫。從使用上來說,OpenGL-ISRC 具有較大的獨立性,與鴻蒙 SDK OpenGL 在實現(xiàn)方式、完善程度、功能提供等方面都存在較大不同。

OpenGL-ISRC 采用 C++ 實現(xiàn)接口,通過 so 庫調(diào)用實現(xiàn)接口調(diào)用的方式,而鴻蒙 SDK OpenGL 的接口采用 JAVA 實現(xiàn)的方式,二者的使用較為獨立,不存在沖突。

圖1,(2)和(3)的對比中可以看出,OpenGL-ISRC 的所提供的功能是相對完善的,鴻蒙 SDK OpenGL 目前還缺少很多標(biāo)準(zhǔn)類,已存在的標(biāo)準(zhǔn)類內(nèi)部功能也有不完整的現(xiàn)象。

OpenGL-ISRC 封裝使用了鴻蒙 SDK OpenGL 的 EGL 類,避免功能重復(fù)開發(fā),因此二者是互相完善的關(guān)系。

由于鴻蒙 SDK OpenGL 的不完整性,OpenGL-ISRC 支持的 OpenGLES 標(biāo)準(zhǔn)類的實現(xiàn)使用了安卓 so 庫的調(diào)用,沒有使用鴻蒙 SDK OpenGL 的 OpenGLES 標(biāo)準(zhǔn)。

04OpenGL-ISRC 的使用

①GlSurfaceProvider 的使用示例

此處創(chuàng)建了 GlSurfaceProvider 控件,add 到 layout 中進(jìn)行顯示,如圖 3 所示。

為了增強 GlSurfaceProvider 的可視化效果,在 GlRenderer 里面設(shè)置了一個紅色的三角圖形。

全球首發(fā):鴻蒙開源平臺OpenGL

圖 3 :GlSurfaceProvider 的使用 demo

三角具體屬性見開源代碼:https://gitee.com/iscas-ohos/OpenGL_ISRC/tree/main,顯示效果如圖 4 所示。

全球首發(fā):鴻蒙開源平臺OpenGL

圖 4 :GlSurfaceProvider 顯示效果

②EGL 和 ETC1 的使用示例

為了驗證了 EGL 的顯示效果,在 initView() 方法中給 Viewport 設(shè)置了紫色方塊視圖屬性,見開源代碼:

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

為了驗證 ETC1 的有效性,將 ETC1.getEncodedDataSize() 的結(jié)果輸出到一個 Text 中進(jìn)行顯示。

當(dāng) EGL 顯示紫色方塊,Text 上顯示 ETC1.getEncodedDataSize() 的結(jié)果時,證明 EGL 和 ETC1 類可成功使用,二者的顯示效果如圖 6 所示。

全球首發(fā):鴻蒙開源平臺OpenGL

圖 5:EGL 和 ETC1 的使用 demo


全球首發(fā):鴻蒙開源平臺OpenGL

圖 6:EGL 的顯示效果、ETC1 的輸出效果

作者: 小雪糕123

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

分享到:
標(biāo)簽:鴻蒙
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達(dá)人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定