阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

Flash 替代者 PiXiJS 为交互式 App 提供跨平台 WebGL 支持

  • 2019-06-13
  • 本文字数:2021 字

    阅读完需:约 7 分钟

Flash 替代者 PiXiJS 为交互式 App 提供跨平台 WebGL 支持

PixiJS是 Adobe Flash 的一个开源替代品,最近发布了第五个主要版本。PixiJS v5通过一组新的 API 抽象了大量的 WebGL 特性,如果有必要可以回退到 HTML5 的Canvas。开发人员不需要再深入研究 WebGL API,也不需要处理浏览器和设备兼容性问题,就可以创建丰富的交互式图形、跨平台应用程序和游戏。除了一流的 WebGL 支持,新的 PixiJS 还提供了更快的图形和 sprite 渲染,更低的 GPU 利用率,以及升级过的过滤器和纹理。


PixiJS 将自己描述成“HTML5 创建引擎”,是一个渲染库,用于方便地创作交互式内容,包括丰富的图形,这让人想起 Adobe Flash。PixiJS v5 也很关注性能和开发人员体验。用 PixiJS 团队的话来说:


这个项目的目的是提供一个快速的轻量级 2D 库,可以跨所有设备工作。PixiJS 渲染器可以让每个人在不了解 WebGL 的情况下利用强大的硬件加速功能。而且它很快,真的非常快。


PixiJS v5 提供完整的WebGL支持,如果 WebGL 不可用,它将回退到 HTML5 的 Canvas。不过,PixiJS v5 通过一个中间层 API 抽象了底层的 WebGL 特性,该 API 在渲染时会自动优化底层的 WebGL 层。具体地说,中间层 API 包括 Geometry、Shader 和 State,它们用于定义在给定时间点定义图形的 Mesh。通过添加事件处理程序和修改 Mesh 属性将会得到最终的交互式图形。Pixi 的文档给出了一个旋转纹理三角形的例子,通过以下 50 行代码来生成这个三角形:


const app = new PIXI.Application();document.body.appendChild(app.view);const geometry = new PIXI.Geometry()    .addAttribute('aVertexPosition', // the attribute name        [-100, -100, // x, y            100, -100, // x, y            100, 100], // x, y        2) // the size of the attribute    .addAttribute('aColor', // the attribute name        [1, 0, 0, // r, g, b            0, 1, 0, // r, g, b            0, 0, 1], // r, g, b        3) // the size of the attribute    .addAttribute('aUvs', // the attribute name        [0, 0, // u, v            1, 0, // u, v            1, 1], // u, v        2); // the size of the attributeconst vertexSrc = `    precision mediump float;    attribute vec2 aVertexPosition;    attribute vec3 aColor;    attribute vec2 aUvs;    uniform mat3 translationMatrix;    uniform mat3 projectionMatrix;    varying vec2 vUvs;    varying vec3 vColor;    void main() {        vUvs = aUvs;        vColor = aColor;        gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);    }`;const fragmentSrc = `    precision mediump float;    varying vec3 vColor;    varying vec2 vUvs;    uniform sampler2D uSampler2;    void main() {        gl_FragColor = texture2D(uSampler2, vUvs) * vec4(vColor, 1.0);    }`;const uniforms = { uSampler2: PIXI.Texture.from('examples/assets/bg_scene_rotate.jpg') };const shader = PIXI.Shader.from(vertexSrc, fragmentSrc, uniforms);const triangle = new PIXI.Mesh(geometry, shader);triangle.position.set(400, 300);triangle.scale.set(2);app.stage.addChild(triangle);app.ticker.add((delta) => {    triangle.rotation += 0.01;});
复制代码


相比之下,一个静态、无色彩的场景如下所示:



这个需要超过120行代码,以及 40 多次调用 WebGL API。


WebGL(用于 Web 图形库)是一个开源的通用底层图形 Web API。WebGL 命令被设计成直接访问图形处理单元(GPU)的特性集。GPU 是大规模并行处理器,由大量计算单元组成,这些计算单元被设计成彼此并行工作,并与 CPU 并行运行。WebGL 主要用于在不使用插件的浏览器中渲染二维图形和交互式三维图形。WebGL 程序由 JavaScript 编写的控制代码和涉及帧缓冲的特殊效果代码(着色器代码)组成。


WebGL 渲染是一个管道化的过程。使用 WebGL 进行可视化的场景被分解为由三个顶点组成的三角形(镶嵌)。管道的第一阶段(顶点着色)获取三角形并计算它们应该绘制的 Canvas 坐标。WebGL Canvas 是一种三维画布,三个轴的值都是从-1.0 到+1.0。三角形被栅格化(第二管道阶段),然后由片段着色器(第三阶段)绘制,它将颜色、深度和其他相关属性与三角形的每个像素相关联。结果映射存储在 WebGL 帧缓冲区中,因此可以应用帧缓冲操作,如深度测试或混合(第四阶段)。


由于 GPU 和 CPU 之间的通信可能很昂贵,优化图形渲染涉及到最大化 GPU 并行使用和最小化 GPU 和 CPU 之间的同步操作。PixiJS v5 添加了批处理和缓存技术,以在幕后实现这些,从而增强开发者体验。


此外,PixiJS v5 具有较低的 GPU 利用率,并提供升级过的滤器和纹理。


PixiJS 基于 MIT 许可协议。


查看英文原文Pixi.js, HTML5 Alternative to Adobe Flash, Adds WebGL Support for Cross-Platform, Interactive Apps


2019-06-13 08:006536
用户头像

发布了 731 篇内容, 共 433.6 次阅读, 收获喜欢 1997 次。

关注

评论

发布
暂无评论
发现更多内容

搜狐基金使用 MySQL 遇到瓶颈?来看 TDengine 如何解决难题

TDengine

tdengine 时序数据库 搜狐基金

Mac14下载-macOS 14 Sonoma(苹果最新系统)14.1.1正式版,pkg安装包

晴雯哥

Cockos REAPER(音频录制编辑软件)特别版下载

影影绰绰一往直前

Cockos REAPER Cockos REAPER下载

聊一聊 tcp/ip 在.NET故障分析的重要性

EquatorCoco

TCP TCP/IP TCP协议

DxO PureRAW (RAW图像处理软件)特别版下载

影影绰绰一往直前

DxO PureRAW下载 DxO PureRAW破解版

零信任嵌入式安全沙箱技术对企业转型的具体优势

Geek_2305a8

前端

Macos端音频标签编辑器 Mp3tag激活中文版最新

胖墩儿不胖y

Mac软件 音频标签编辑器

软件测试/测试开发丨接口测试学习笔记,TcpDump与WireShark

测试人

软件测试 接口测试

Topaz Video AI (AI视频无损放大软件)汉化直装版

影影绰绰一往直前

Topaz Video AI下载 Topaz Video AI破解版 Topaz Video AI中文版

Passper for Excel(文档密码解锁软件)激活版下载

影影绰绰一往直前

Passper for Excel下载 Passper for Excel激活 Passper for Excel中文

LTV预测算法从开发到上线,浅谈基于奇点云DataSimba的MLOps实践

Geek_2d6073

AutoCAD 2024 for Mac v2024.3永久中文破解版 cad设计绘图 支持intel/M2

晴雯哥

在Javascript中为什么 0.1+0.2 不等于0.3 ? 源代码详细解析

互联网工科生

JavaScript

Codigger,你的代码安全卫士

知者如C

一文了解亚马逊云科技最新大语言模型

苏沐

大模型 亚马逊 亚马逊云科技 向量数据库

可测性,到底是什么?

老张

质量保障 质量门禁

“PO价值最大化”沙盘演练 · 上海 · 第二期

ShineScrum捷行

Macos端强大的字体设计软件 Glyphs 3激活中文版

mac大玩家j

Mac软件 字体设计 设计字体 字体设计工具

Print2CAD 2024 AI(文件转换器)特别版下载

影影绰绰一往直前

Print2CAD 2024 AI下载 Print2CAD 2024 AI特别 Print2CAD 2024 AI激活

Adobe Camera Raw 16(RAW处理工具)官方版下载

影影绰绰一往直前

Adobe Camera Raw下载 Adobe Camera Raw中文 Adobe Camera Raw破解 RAW处理工具

Dash for Mac v7.1.6激活版 好用的API文档工具

晴雯哥

Sketch v99 中文破解版 最好用的矢量绘图软件

晴雯哥

光纤的跳线和尾纤区别

小魏写代码

调用API接口获取淘宝商品数据:详细指南与代码实践

Noah

国外服务器购买必备知识:如何避免常见陷阱?

一只扑棱蛾子

前端计算数字精度丢失问题解决方法记录 | 京东云技术团队

京东科技开发者

前端 企业号11月PK榜 数字精度

DxO FilmPack 7 for mac(胶片效果滤镜软件) 7.1.0永久激活版

mac

苹果mac Windows软件 DxO FilmPack 7 照片处理软件

大模型训练中的超参数优化策略

百度开发者中心

深度学习 大模型 #人工智能

Nik Collection by DxO(照片编辑插件套件)中文版

影影绰绰一往直前

PS滤镜Nik Collection Nik Collection下载 Nik Collection插件 Nik Collection破解版

PolarDB-X V2.3 集中式和分布式一体化开源发布

阿里云数据库开源

polarDB PolarDB-X

流式数据库引擎备受关注,亚信安慧AntDB数据库受邀参加“2023中国PostgreSQL数据库生态大会”

亚信AntDB数据库

AntDB AntDB数据库

Flash 替代者 PiXiJS 为交互式 App 提供跨平台 WebGL 支持_语言 & 开发_Bruno Couriol_InfoQ精选文章