使用Native、XComponent和EGL绘制图形
使用Native、XComponent和EGL绘制图形
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
HarmonyOS 绘制图形,radius无法使用数组定义4个圆角
174浏览 • 1回复 待解决
如何使用canvas绘制图形?环境是API6,java编写自定义组件
2360浏览 • 1回复 待解决
画布上绘制图片如何实现?
247浏览 • 1回复 待解决
HarmonyOS Canvas中关于绘制图片问题
209浏览 • 1回复 待解决
XComponent、NativeDrawing实现2D图形绘制
976浏览 • 1回复 待解决
鸿蒙绘制图形Path折线绘制Polyline设置折线拐角处为圆弧达不到效果,能不能增加圆角属性
1644浏览 • 1回复 待解决
如何在使用 Canvas 绘制图像时处理像素模糊问题?
21浏览 • 0回复 待解决
XComponent、openGL实现3D图形绘制
1397浏览 • 1回复 待解决
Native XComponent、Drawing、手势实现上下滑动文本和图形拖移
850浏览 • 1回复 待解决
使用Drawing实现图形绘制与显示
770浏览 • 1回复 待解决
EGL绘制是否支持多线程?如何在多线程的场景下同时操作一块buffer进行图形绘制
1917浏览 • 1回复 待解决
如何使用EGL绘制自定义动画?请提供一个简单示例
1887浏览 • 1回复 待解决
在多线程的场景下EGL同时操作一块buffer进行绘制
366浏览 • 1回复 待解决
XComponent是怎么与native进行关联的?
2535浏览 • 1回复 待解决
通过Native 调用c++层实现文本绘制
883浏览 • 1回复 待解决
XComponent 使用demo,怎么动态创建、销毁 XComponent,及怎样将XComponent当做容器来使用
190浏览 • 1回复 待解决
编写一个工程,进行Native XComponent开发
641浏览 • 1回复 待解决
XComponent使用OpenGl ES
960浏览 • 1回复 待解决
多线程中EGL如何共享Context
300浏览 • 1回复 待解决
图形图像开发场景实践
621浏览 • 1回复 待解决
关于初始化EGL环境相关问题
457浏览 • 1回复 待解决
如何使用canvas绘制圆角矩形
392浏览 • 1回复 待解决
HarmonyOS 绘制组件和画布组件选择问题
315浏览 • 1回复 待解决
native使用fork函数,出现cppcrash
1580浏览 • 1回复 待解决
HarmonyOS RN使用ScrollView做横向滚动时和Native的横向滚动冲突
214浏览 • 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,编译成动态链接库
效果展示
绘制矩形
触摸矩形改变颜色