#yew-component #webgl #limelight #支架 #webgl2 #渲染 #画布

limelight-yew

使用 limelight 创建 WebGL2 渲染 Yew 组件的支架

1 个不稳定版本

0.1.0 2021 年 12 月 15 日

#10#webgl2

MIT 许可证

76KB
2K SLoC

limelight-yew

为使用 limelight 将渲染到画布上的 Yew 组件提供支架。应用程序可以实现 LimelightController,然后将其包装在 LimelightComponent 中,并直接用作 Yew 组件。

例如,原始场景 演示(代码)实现为一个名为 Primitives 的类,该类实现了 std::default::DefaultLimelightController

然后通过 Yew 以这种方式初始化

yew::start_app::<LimelightComponent<Primitives>>();

LimelightController 的实现者只需实现一个函数,即 fn draw(&mut self, renderer: &mut Renderer, _ts: f64) -> Result<limelight_yew::ShouldRequestAnimationFrame>。此函数在每个动画帧被调用,以告知控制器使用提供的 Renderer 绘制其内容。

实现者可以选择实现其他函数,例如 handle_zoomhandle_drag,以响应对组件的鼠标交互。

所有方法返回一个bool(别名ShouldRequestAnimationFrame)或者一个Result<bool>。如果方法需要触发重绘,应该返回true。对于handle_方法,通常意味着它们修改了应该在图像中反映的缓冲区或统一变量。对于draw,如果draw调用本身更新了统一变量或缓冲区,则返回Ok(true)是创建动画循环的预期方式。

依赖项

~13MB
~224K SLoC