鸿蒙原生应用元服务开发-WebGL网页图形库开发概述

WebGL的全称为Web Graphic Library(网页图形库),主要用于交互式渲染2D图形和3D图形。目前HarmonyOS中使用的WebGL是基于OpenGL裁剪的OpenGL ES,可以在HTML5的canvas元素对象中使用,无需使用插件,支持跨平台。WebGL程序是由JavaScript代码组成的,其中使用的API可以利用用户设备提供的GPU硬件完成图形渲染和加速。基本概念如下。

一、着色器

可以理解为运行在显卡中的指令和数据。在WebGL中,着色器是用OpenGL ES着色语言(GLSL)编写的。

完整的着色器包括顶点着色器和片元着色器。顶点着色器和片元着色器的交互则涉及到图片光栅化。

顶点着色器:最基本的任务是接收三维空间中点的坐标,将其处理为二维空间中的坐标并输出。

片元着色器:最基本的任务是对需要处理的屏幕上的每个像素输出一个颜色值。

图片光栅化:将顶点着色器输出的二维空间中的点坐标,转化为需要处理的像素并传递给片元着色器的过程。

二、缓冲区

驻存于内存中的JavaScript对象,存储着即将推送到着色器中的attribute对象。

三、着色器程序

将缓冲区中的数据推送到着色器中还需涉及“着色器程序”,一个负责关联着色器和缓冲区的JavaScript对象。一个WebGLProgram 对象由两个编译过后的 WebGLShader 组成,即顶点着色器和片段着色器(均由 GLSL 语言所写)。

四、运作机制

图1 WebGL运作机制

应用前端HTML5绘制界面组件。

Native API完成前端JavaScript与C++代码交互。

JavaScript engine为图形框架,为WebGL模块提供绘制对象Surface。

WebGL模块对外暴露OpenGL ES的GPU绘制接口。

中间接口层EGL(Embedded Graphics Library)完成不同平台的适配。

本文参考引用HarmonyOS官方开发文档,基于API9。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/729554.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenBayes 一周速览|在 OpenBayes 上一键运行通义千问大模型、PAWS-X 跨语言对抗数据集上线

公共资源速递 This Weekly Snapshots ! 3 个数据集: * PKU 简体中文分词数据集 * 1,823 张花卉图像数据集 * PAWS-X :用于释义识别的跨语言对抗数据集 1 个模型: * Yi-34B-Chat-4bits 2 个教程: * 通义千问 1…

解读:DUSt3R: Geometric 3D Vision Made Easy

概述:给定一个无约束图像集,即一组具有未知相机姿态和内在特征的照片,我们提出的 DUSt3R 方法会输出一组相应的点阵图,从中我们可以直接恢复通常难以一次性估算的各种几何量,如相机参数、像素对应关系、深度图和完全一…

【PCIe】 PCIe 拓扑结构与分层结构

🔥博客主页:PannLZ 文章目录 PCIe拓扑结构PCIe分层结构 PCIe拓扑结构 计算机网络中的拓扑结构源于拓扑学(研究与大小、形状无关的点、线关系的方法)。 把网络中的计算机和通信设备抽象为一个点,把传输介质抽象为一条线,由点和线组…

【物联网】stm32芯片结构组成,固件库、启动过程、时钟系统、GPIO、NVIC、DMA、UART以及看门狗电路的全面详解

一、stm32的介绍 1、概述 stm32: ST:指意法半导体 M:指定微处理器 32:表示计算机处理器位数 与ARM关系:采用ARM推出cortex-A,R,M三系中的M系列,其架构主要基于ARMv7-M实现 ARM分成三个系列: Cortex-A&…

【排序算法】推排序算法解析:从原理到实现

目录 1. 引言 2. 推排序算法原理 3. 推排序的时间复杂度分析 4. 推排序的应用场景 5. 推排序的优缺点分析 5.1 优点: 5.2 缺点: 6. Java、JavaScript 和 Python 实现推排序算法 6.1 Java 实现: 6.2 JavaScript 实现: 6.…

Unity3D AStar地图编辑与寻路测试详解

前言 A算法是一种常用的寻路算法,能够帮助游戏对象在地图中找到最短路径。本文将详细介绍如何在Unity3D中使用A算法进行地图编辑和寻路测试。 对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀! 一…

第四节 LLAVA模型推理命令(包含lora训练权重推理方法)

文章目录 前言一、模型推理公用命令二、模型自带推理命令1、整个文件命令2、模型自带fitune推理3、clip推理三、个人lora训练推理命令1、使用命令推理2、vscode推理前言 LLAVA模型训练方式有预训练、微调训练,而预训练需要大量算力与数据支持,我们将不在重点考虑。对于微调,…

K8S之实现业务的金丝雀发布

如何实现金丝雀发布 金丝雀发布简介优缺点在k8s中实现金丝雀发布 金丝雀发布简介 金丝雀发布的由来:17 世纪,英国矿井工人发现,金丝雀对瓦斯这种气体十分敏感。空气中哪怕有极其微量的瓦斯,金丝雀也会停止歌唱;当瓦斯…

【JS逆向学习】猿人学 第五题 js混淆 乱码

逆向目标 网址:https://match.yuanrenxue.cn/match/5接口:https://match.yuanrenxue.cn/api/match/5?page2&m1709806560791&f1709806560000参数: Cookie(m、RM4hZBv0dDon443M)payload(m、f) 逆向过程 老规矩,上来先分…

电商api数据接口开发采集淘宝实时详情页,销量,库存,sku,图片,链接等参数接入key获取方式

淘宝实时详情页的API数据接口开发涉及到多个参数的采集,包括销量、库存、SKU、图片、链接等。要实现这一功能并获取接入Key,您需要按照以下步骤操作: 注册开放平台账号:您需要在淘宝开放平台注册一个账号。创建应用:在…

错误笔记:不支援 10 验证类型、org.postgresql.util.PSQLException

1、不支援 10 验证类型。请核对您已经组态 pg_hba.conf 文件包含客户端的IP位址或网路区段,以及驱动程序所支援的验证架构模式已被支援。 解决方法: 找到C:\Program Files\PostgreSQL\13\data目录下的pg_hba.conf将下列注释掉 # TYPE DATABASE …

第24集《灵峰宗论导读》

请大家打开讲义第79面。 在第一段呢蕅益大师先讲到这个诸法实相的妙理,说从我们现前一念心性来观察诸法实相有两个角度: 第一个角度呢就是当我们摄用归体的时候,所谓万法唯识一心的时候,这个时候我们会发觉三世诸佛,…

vue实现文字手工动态打出效果

vue实现文字手工动态打出效果 问题背景 本文实现vue中&#xff0c;动态生成文字手动打出效果。 问题分析 话不多说&#xff0c;直接上代码&#xff1a; <template><main><button click"makeText"><p class"text">点击生成内容…

Cisco IOS 使用 IP SLA 状态作为静态路由的开关

Cisco IOS 和 IOS XE 作为最普及的路由器和交换机操作系统&#xff0c;内建强大的状态跟踪联动能力。 我们配置网络设备时&#xff0c;希望设备能主动发现网络故障&#xff0c;及时作出相应调整&#xff0c;并将故障状态传递给网络的其他部分&#xff0c;减少故障恢复时的人工…

【Java】ruoyi框架,添加ShardingJdbc支持分库分表

1、 调研&#xff0c;目前主流的有Mycat、Sharding Jdbc &#xff0c;准备选用后者&#xff1b; 分库分表&#xff0c;一种是按照时间范围进行&#xff0c;另外一种按照某个字段为分片键&#xff1b; 我这里&#xff0c;选用表数据中的DeptId字段作为分片键&#xff0c;这样能…

启动vue项目执行npm run serve报错 : error in ./src/element-variables.scss

error in ./src/element-variables.scss 问题原因 node-sass的版本问题 解决方式 我直接更新了一下node-sass&#xff0c;就好了 npm install node-sass 再次执行就可以执行成功了

如何设置WhatsApp Business账号?

WhatsApp Business是WhatsApp为企业打造的一款应用程序&#xff0c;旨在帮助企业与客户更轻松地互动。如果您是一家出海企业&#xff0c;想要更好地与客户沟通&#xff0c;那么WhatsApp Business账号是您不可或缺的工具。 以下是设置WhatsApp Business账号的步骤&#xff1a; …

AIGC绘画关键词 - 写实少女

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分…

【栈】20. 有效的括号

20. 有效的括号 思路总结 解决这个问题的关键是使用栈&#xff08;Stack&#xff09;这一数据结构。算法的核心思想是&#xff0c;当遍历到一个左括号时&#xff0c;将其压入栈中&#xff1b;当遍历到一个右括号时&#xff0c;尝试从栈顶弹出一个元素&#xff0c;并检查这个栈…

MongoDB黑窗口操作(CRUD)

目录 连接数据库 插入数据 for循环插入数据 根据条件查询 修改数据 删除数据 连接数据库 对应路径下cmd中输入命令mongo即可 插入数据 j{name:"mongo"} t{x:3} 提交&#xff1a;db.things.svae(j);db.things.svae(t); 查询&#xff1a;db.things.find(); …