使用Native、XComponent和EGL绘制图形
使用Native、XComponent和EGL绘制图形
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
如何使用canvas绘制图形?环境是API6,java编写自定义组件
1090浏览 • 1回复 待解决
鸿蒙绘制图形Path折线绘制Polyline设置折线拐角处为圆弧达不到效果,能不能增加圆角属性
497浏览 • 1回复 待解决
XComponent、NativeDrawing实现2D图形绘制
427浏览 • 1回复 待解决
XComponent、openGL实现3D图形绘制
463浏览 • 1回复 待解决
Native XComponent、Drawing、手势实现上下滑动文本和图形拖移
339浏览 • 1回复 待解决
使用Drawing实现图形绘制与显示
368浏览 • 1回复 待解决
EGL绘制是否支持多线程?如何在多线程的场景下同时操作一块buffer进行图形绘制
627浏览 • 1回复 待解决
如何使用EGL绘制自定义动画?请提供一个简单示例
549浏览 • 1回复 待解决
XComponent是怎么与native进行关联的?
928浏览 • 1回复 待解决
XComponent使用OpenGl ES
226浏览 • 1回复 待解决
编写一个工程,进行Native XComponent开发
288浏览 • 1回复 待解决
通过Native 调用c++层实现文本绘制
446浏览 • 1回复 待解决
XComponent的onLoad和C++层的onSurfaceCreated的时序关系
632浏览 • 0回复 待解决
使用Drawing进行2d图像绘制
416浏览 • 1回复 待解决
Xcomponent绘图流程分析
456浏览 • 1回复 待解决
DevEco如何使用js绘制类似下面的这种表格
2763浏览 • 1回复 待解决
native使用fork函数,出现cppcrash
416浏览 • 1回复 待解决
如何使用gdb调试native应用
303浏览 • 1回复 待解决
XComponent 怎么设置为透明
757浏览 • 1回复 待解决
Xcomponent、NativeImage开发指导
438浏览 • 1回复 待解决
图形图像开发场景实践
307浏览 • 1回复 待解决
ArkTS和Native如何动态加载、卸载so
705浏览 • 1回复 待解决
XComponent组件如何设置背景颜色
847浏览 • 1回复 待解决
动态缩放XComponent大小和视频播放时的性能对比
641浏览 • 1回复 待解决
native侧如何使用类的静态方法
467浏览 • 1回复 待解决
本demo实现了绘制矩形的功能,可以通过触摸矩形区域为矩形更换颜色,点击绘制矩形按钮后恢复原本的颜色。
核心组件
l EGL(Embedded Graphic Library):EGL 是Khronos渲染API (如OpenGL ES 或 OpenVG) 与底层原生窗口系统之间的接口。
l XComponent:可用于EGL/OpenGLES和媒体数据写入,并显示在XComponent组件。
项目代码结构
├──entry/src/main
│ ├──cpp // C++代码区
│ │ ├──CMakeLists.txt // CMake配置文件
│ │ ├──hello.cpp // C++源代码
│ │ ├──common
│ │ │ └──common.h // 常量定义文件
│ │ ├──manager // 生命周期管理模块
│ │ │ ├──PluginManager.cpp
│ │ │ └──PluginManager.h
│ │ ├──render // 渲染模块
│ │ │ ├──EGLCore.cpp
│ │ │ ├──EGLCore.h
│ │ │ ├──PluginRender.cpp
│ │ │ └──PluginRender.h
│ │ └──types // 接口存放文件夹
│ │ └──libentry
│ │ ├──index.d.ts // 接口文件
│ │ └──oh-package.json5 // 接口注册配置文件
│ └──ets // 代码区
│ ├──common
│ │ └──CommonConstants.ets // 常量定义文件
│ ├──entryability
│ │ └──EntryAbility.ts // 程序入口类
│ └──pages // 页面文件
│ └──Index.ets // 主界面
└──entry/src/main/resources // 资源文件目录
demo架构
使用C++代码实现业务逻辑,ArkTS代码用于前端界面以及调用相关方法
l C++侧:实现图像渲染、应用管理以及页面的生命周期管理
l ArkTS侧:调用c++侧的图形渲染方法以及生命周期管理方法,实现前端界面
l CMake:跨平台编译工具,将C++代码编译成so文件提供给ArkTS
ArkTS代码
定义XComponent
ArkTS核心代码
界面
C++代码
模块注册 hello.cpp
注册XComponent事件回调
定义surface创建、改变、销毁和XComponent触摸事件回调
矩形绘制方法
初始化EGL
渲染实现
绘制背景
绘制图形
改变颜色,重新绘制大小相同颜色不同的图形
资源释放
EGLCore的资源释放
PluginRender的资源释放
CMakeLists,编译成动态链接库
效果展示
绘制矩形
触摸矩形改变颜色