99次发布
0.45.0 | 2024年3月21日 |
---|---|
0.44.0 | 2023年12月3日 |
0.43.0 | 2023年6月2日 |
0.39.0 | 2023年3月26日 |
0.0.11 | 2019年10月28日 |
#53 in WebAssembly
1,374 每月下载次数
用于 dominator_helpers
375KB
8K SLoC
DEMO
关于
awsm_web主要用作awsm生态系统内其他crates的构建模块。
描述
该库的方法在精神上与gloo类似,也就是说,它连接了自动生成的WebIDL驱动的web-sys提供的绑定和我们在Web应用中通常考虑的真正的起点之间的差距。
特性
特性被严格限制以保持依赖项最小。默认情况下,不启用任何特性,但all
特性将全部启用(除了一些仅用于调试的特性,如debug_log
)。
WebGL
缓存
目标是保持它非常低级和低成本的抽象,几乎是通用的。然而,“几乎是通用的”并非没有观点。例如,webgl包装器为所有字符串查找(包括ubo偏移量和纹理采样器)提供了一种懒惰的缓存机制,并将本地状态存储起来以避免进行不必要的gl调用。
关于是否使用字符串或预先计算好的整数
uniforms
:你无法提前知道这些,你必须通过一个接受字符串的Web API调用来获取它们uniform buffer objects
:你可以预先设置和计算它,但它非常容易出错且脆弱sampler index
:可以预先设置,但需要与uniform值同步attributes
:可以预先设置,无论是通过着色器代码还是Web API
因此,对于除了属性之外的所有事情,最好在所有地方都使用字符串 - 在第一次调用之后,它仅是一个本地缓存查找。
注意,还有一个全局注册表,用于在着色器代码之前指定ubo和属性的位置
API
它发生在几个级别上
第一级是对原生web_sys类型的非常薄的包装,作为扩展特性添加到上下文中(既适用于webgl1也适用于2)。这些可以直接用于上下文,并以前缀awsm_*
开头。在这个级别,不维护任何额外的状态。
然后,WebGlRenderer 包装器(也适用于 1 和 2)包含上述提到的所有状态和缓存内容。为了便于使用,许多可以直接在上下文中调用的函数都在渲染器上重新导出,而不带 awsm_
前缀。
依赖项
~6.5–9MB
~176K SLoC