11 个版本

0.0.11 2019 年 8 月 8 日
0.0.10 2019 年 8 月 7 日
0.0.7 2019 年 7 月 31 日
0.0.2-alpha2019 年 6 月 27 日
0.0.1 2019 年 5 月 18 日

WebAssembly 类别中排名第 829

每月下载 26

MIT 许可证

1.5MB
5.5K SLoC

Build Status

CRATES.IO - DOCS

关于

awsm 是一个中级 crate,用于 Rust 驱动的 wasm,特别是需要高性能和无 GC 的游戏开发/沉浸式体验等事项。

演示

状态

目前仍然保持小版本号,因为 API 可能会更改 - 但已经完成了很多事情 :) 查看它!

描述

总的来说,这个库的方法与 gloo 类似,旨在弥合由 web-sys 提供的自动生成的 WebIDL 驱动的绑定与我们在网络应用中通常考虑的真实起点代码之间的差距。

这也是我个人的实验场所,用于在 Rust 方面(这是我第一个项目)和原始 webgl 渲染器方面(第二个或第三个)弄清楚问题,因此更倾向于“这足够好吗”而不是“这是否是正确的 API,是否足够模块化等”。

各种特性基本上与 demo 上可测试的内容相匹配,每个特性都有一个链接到该示例的源代码。

虽然这是一个中级并且有时非常主观的包装器,但其目标也是保持非常低级别和低成本抽象。例如,webgl 包装器执行大量的预缓存并存储本地状态,以避免不必要地进行 gl 调用 - 这大多数项目都会做,但它不提供场景图或任何类型的固有绘图调用组。它基本上是 免费 通过名称与所有着色器变量一起工作(上传属性、统一变量、切换纹理和程序等),并更改渲染状态(混合函数、切换等。) - 但这个库不会检查你想要在某个混合状态下执行的调用是否分组在一起,例如。这将是这个之上的另一个抽象级别。

构建

examples/ 文件夹中通过 npm 运行命令

开发模式

npm start

这将启动演示并打开一个浏览器,进行实时重新加载。需要安装 watchexec)

打包

运行npm run bundle

这实际上只是部署的一个初步步骤,但有助于看到优化设置如何启动。需要安装wasm-opt提示:只需解压缩并将其放置在路径中的某个位置。

部署

运行npm run deploy

非授权用户应该会失败... 需要安装netlify-cli)

实时编码

为了克服学习曲线(如上所述——这是我第一个Rust项目),我想直播编码和学习会话可能有所帮助,并将它们存档在播放列表中以供回顾。

在Twitch上:https://www.twitch.tv/dakomz

依赖项

~6.5–9MB
~176K SLoC