前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >HarmonyOS NEXT 使用XComponent + Vsync 实现自定义动画

HarmonyOS NEXT 使用XComponent + Vsync 实现自定义动画

原创
作者头像
小帅聊鸿蒙
发布于 2024-09-14 12:49:49
发布于 2024-09-14 12:49:49
23000
代码可运行
举报
文章被收录于专栏:鸿蒙开发笔记鸿蒙开发笔记
运行总次数:0
代码可运行

介绍

XComponent 提供了应用在 native 侧调用 OpenGLES 图形接口的能力,本文主要介绍如何配合 Vsync 事件,完成自定义动画。在这种实现方式下,自定义动画的绘制不在 UI 主线程中完成,即使主线程卡顿,动画效果也不会受影响。

效果演示

实现思路

  1. CMakelists 增加 lib 依赖
代码语言:cpp
代码运行次数:0
运行
AI代码解释
复制
find_library( # Sets the name of the path variable.
               libvsync-lib
               # Specifies the name of the NDK library that
               # you want CMake to locate.
               native_vsync )
  1. 创建 vsync 实例
代码语言:cpp
代码运行次数:0
运行
AI代码解释
复制
#include <native_vsync/native_vsync.h>

SyncParam *param = new SyncParam();
param->eglCore = this;
param->window = window;
mVsync = OH_NativeVSync_Create(GAME_SYNC_NAME, 3);
if (!mVsync) {
    LOGE("EGLCore:: Create mVsync failed");
    return;
}
  1. 创建 OH_NativeVSync_RequestFrame 回调,并在回调中使用 egl 接口进行绘制
代码语言:cpp
代码运行次数:0
运行
AI代码解释
复制
OH_NativeVSync_RequestFrame(
    mVsync,
    [](long long timestamp, void *data) {
        LOGI("EGLCore::OH_NativeVSync_RequestFrame timestamp = %{public}lld", timestamp);
        SyncParam *syncParam = (SyncParam *)data;
        if (syncParam == nullptr) {
            return;
        }
        EGLCore *eglCore = syncParam->eglCore;
        void *window = syncParam->window;
        if (eglCore == nullptr || window == nullptr) {
            return;
        }
        eglCore->mEglWindow = static_cast<EGLNativeWindowType>(window);
        ...
        eglCore->DrawSquare();
        eglCore->switchSpecular();
        eglCore->switchAmbient();
        },
    param
);

此处需要注意,frame callback 回调的执行线程不是当前申请 OH_NativeVSync_RequestFrame 的线程,而是 vsync 实例中申请的 eventlooper 线程。所以,egl Window 的初始化也需要放到 callback 中创建。

高性能知识点

  • 一个 Vsync 实例对应一个 EventRunner 创建的新线程,在这个线程中执行渲染处理,理论上这个线程的运算耗时,只会影响动画帧率,不会影响应用主线程的帧率。
  • 其余 OpenGLES 的绘制方法,与社区的 OpenGLES 的用法一致

工程结构&模块类型

代码语言:shell
AI代码解释
复制
   XcomponentVsync                                        // har类型
   |---cpp                                                // native xcomponent配合vsync实现自定义动画
   |---pages
   |   |---XcomponentVsync.ets                            // Xcomponent 组件加载自定义动画 

写在最后

如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:

  • 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力;
  • 关注小编,同时可以期待后续文章ing🚀,不定期分享原创知识;
  • 想要获取更多完整鸿蒙最新学习知识点,可关注B站:码牛课堂鸿蒙开发;

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
ChatGPT开学大礼包:官方教师使用指南正式上线
不仅总结了教师如何使用ChatGPT帮助学生学习,还手把手教老师们使用提示写教案、创建AI导师……
量子位
2023/09/08
2310
ChatGPT开学大礼包:官方教师使用指南正式上线
ChatGPT对于中小学生学习的十三种使用方式,帮助学生成长和教师教学
这个寒假,可以说是ChatGPT的狂欢,他不仅是技术人员科研路上的巨大突破,在教育领域也有无穷的可能
小渔夫
2023/02/11
4.5K0
ChatGPT对于中小学生学习的十三种使用方式,帮助学生成长和教师教学
ChatGPT 提示词大师
欢迎来到《ChatGPT 提示大师:精通有效提示指南》!这个详尽的教程将教会你一切关于创建简洁有效的 ChatGPT 提示,激发有趣和教育性对话的知识。
ApacheCN_飞龙
2024/05/24
3140
ChatGPT 提示词大师
【AIGC】ChatGPT提示词Prompt解析:如何打造个人IP、CSDN爆款技术文案与高效教案设计
这篇文章详细介绍了如何利用ChatGPT在多个领域中提升效率和创作质量,包括个人IP文案的打造、CSDN爆款技术文案的撰写、以及高效教案的设计。通过一步步的引导和优化,ChatGPT不仅帮助用户快速生成内容,还能根据不同平台的需求进行个性化调整。无论是自媒体博主、技术博主,还是教育工作者,ChatGPT都能够成为提升创作效率、优化内容质量的得力助手,让内容更加精准、吸引人。
CSDN-Z
2024/10/17
2000
【AIGC】ChatGPT提示词Prompt解析:如何打造个人IP、CSDN爆款技术文案与高效教案设计
AI时代,如何赢在教育
2017 年,一位身材瘦削的男子登上了世界上历史最悠久的科学节之一——英国科学节的舞台。著名教育家和历史学家安东尼 · 塞尔登凝视着来自世界各地的顶尖研究人员,他宣称,到 2027 年,教师将由人工智能而不是人类来担任。他说,即将到来的技术将迫使教师扮演课堂助手的角色,而技术将成为知识的传播者。他表示,很快,每个人都将拥有最好的教师和完全个性化的教育体验。这个软件将伴随你的整个教育旅程,并且会根据每个学习者的进度来调整速度。
小腾资讯君
2024/08/27
1490
AI大模型在教育场景的提效
上面的prompt通过关键词act as让ChatGPT扮演一名英语老师,并且严格检查我的语法、拼写、和事实错误并且更正。
董峤术
2023/04/25
1.1K0
3.ChatGPT在教育领域的应用:教学辅助与案例分享(3/10)
在21世纪的教育领域,技术革新正以前所未有的速度改变着传统的教学和学习方式。随着人工智能(AI)的快速发展,教育技术(EdTech)领域迎来了新的突破,其中ChatGPT作为一种先进的自然语言处理工具,已经成为教育创新的重要推动力。
正在走向自律
2024/12/18
3390
3.ChatGPT在教育领域的应用:教学辅助与案例分享(3/10)
使用 ChatGPT 的 7 个技巧 | Prompt Engineering 学习笔记
前段时间在 DeepLearning 学了一门 Prompt 的课程,吴恩达本人授课,讲的通俗易懂,感觉受益匪浅,因此在这里总结分享一下我的学习笔记。
phoenix.xiao
2023/08/28
6360
使用 ChatGPT 的 7 个技巧 | Prompt Engineering 学习笔记
ChatGPT提示词保姆级教程
吴恩达联合OpenAI出ChatGPT 提示词教程 课程涵盖从理论到应用的各个方面,包括大型语言模型、文本嵌入、强化学习等技术的应用。 https://learn.deeplearning.ai/
Dlimeng
2024/05/24
4480
ChatGPT提示词保姆级教程
【愚公系列】《AI智能化办公:ChatGPT使用方法与技巧从入门到精通》 033-ChatGPT的更多场景应用(ChatGPT+教育)
推荐链接:https://cloud.tencent.com/developer/article/2464989
愚公搬代码
2024/11/12
1200
【愚公系列】《高效使用DeepSeek》022-在线课程学习
📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主!
愚公搬代码
2025/03/29
1660
【愚公系列】《AI智能化办公:ChatGPT使用方法与技巧从入门到精通》 031-ChatGPT的更多场景应用(ChatGPT+学术)
ChatGPT在学术界具有重要作用。学生、研究人员和教育工作者可利用ChatGPT进行知识交流,进行特定领域的文献检索、查找参考资料和获取阅读建议。此外,ChatGPT还可用于辅助学术写作,提供论文结构建议、解释学术概念和支持引用格式。
愚公搬代码
2024/10/15
2400
【愚公系列】《AI智能化办公:ChatGPT使用方法与技巧从入门到精通》 006-ChatGPT是什么(ChatGPT与我们)
ChatGPT的使用方法非常简单,只需在对话界面中输入问题,ChatGPT就会自动回复相应的答案。目前,ChatGPT已经在多个领域得到广泛应用,能够显著提高工作效率,降低人力成本,并提供更便捷的服务体验。对于普通用户来说,与ChatGPT打交道最重要的是保持积极的心态,了解其工作原理和使用方法,不断学习和探索,以提升自己的使用技能,获取更多知识和信息,拓展视野和认知,使ChatGPT在生活和工作中发挥最大作用。
愚公搬代码
2024/10/02
1590
ChatGPT 提示词技巧:制作Ai看得懂清晰有效咒语
当ChatGPT首次推出时,我立即被它的功能所吸引。我以各种方式尝试了该工具,并一直对结果感到惊讶。当我看到其他人找到使用 ChatGPT 的创造性方法并了解更多关于如何优化其潜力的信息时,我受到启发,创建了的有效提示存储库。发现和探索 ChatGPT 的功能,然后与他人分享我的发现,这确实令人兴奋。
轩源
2024/11/22
1440
ChatGPT 提示词技巧:制作Ai看得懂清晰有效咒语
人工智能改变教育:理解和在课堂上使用 ChatGPT 的指南
这本直言不讳、幽默风趣的指南充满了可操作的提示、技巧和策略,帮助你在业务中充分利用 ChatGPT 的优势。在你的创业旅程中,借助人工智能的力量,取得令人瞠目结舌的成果。
ApacheCN_飞龙
2024/04/10
6090
如何有效向Chatgpt提问
在以前我也写了一篇提问的艺术,不过是面对的对象是人。(详见:更好的解决问题方法:提问的艺术)。最近随着chatgpt的火爆,越来越多的人了解和使用chatgpt,也有很多新的人工智能相继问世,如百度的文心一言,华为的盘古,腾讯的混元,阿里的通义千问,讯飞的星火等等。虽然如今ai技术得到飞跃式增长,ai们理解人类自然语言变得更加强大,但是学习如何提问也还是极为重要的。掌握向ai提问的技巧和方法,能够获得准确,有用的回答,有效提高提问效率。
Daimon
2023/08/23
5360
[ChatGPT]-01-chatgpt可以做什么?如何调教
示例:Java 后端开发工程师、React 前端开发工程师、全栈开发工程师、iOS 开发工程师、Android开发工程师等。 回复截图请看这里
AI拉呱
2023/04/01
1.1K0
哪些 GPTs 应用让我眼前一亮?你又该如何找到它们?
OpenAI 开发者大会后,你不难发现创建定制化 GPTs 应用变得非常简单,致使众多创新者纷纷进入这一领域。我使用 DALL・E 3 技术,在 ChatGPT 中绘制了一幅图,描绘这一场景。
王树义
2023/11/17
8420
哪些 GPTs 应用让我眼前一亮?你又该如何找到它们?
ChatGPT 中文调教指南
ChatGPT是由OpenAI 训练的一款大型语言模型,能够和你进行任何领域的对话。
用户10399177
2023/03/28
1.5K2
生成式AI在教育技术中的应用:变革与创新
在过去的几十年中,人工智能技术在教育领域的应用引发了显著的变革,从早期的简单自动化评估系统到现在的个性化学习助手。生成式AI(AIGC)作为AI领域的重要分支,正在快速进入教育技术的主流,为教育带来了全新的可能性。这种技术的出现不仅能生成文本、图像等内容,还能有效地个性化教育内容,激发学生的学习兴趣,提高教学的质量和效率。本博客将从多个角度深入探讨AIGC在教育技术(EdTech)中的应用及其对未来教育的影响,并展示一些实际的技术实现方法。
用户11289931
2024/11/24
4370
推荐阅读
相关推荐
ChatGPT开学大礼包:官方教师使用指南正式上线
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验