1 个不稳定版本
0.1.0 | 2021 年 12 月 15 日 |
---|
#10 在 #webgl2
76KB
2K SLoC
limelight-yew
为使用 limelight 将渲染到画布上的 Yew 组件提供支架。应用程序可以实现 LimelightController
,然后将其包装在 LimelightComponent
中,并直接用作 Yew 组件。
例如,原始场景 演示(代码)实现为一个名为 Primitives
的类,该类实现了 std::default::Default
和 LimelightController
。
然后通过 Yew 以这种方式初始化
yew::start_app::<LimelightComponent<Primitives>>();
LimelightController
的实现者只需实现一个函数,即 fn draw(&mut self, renderer: &mut Renderer, _ts: f64) -> Result<limelight_yew::ShouldRequestAnimationFrame>
。此函数在每个动画帧被调用,以告知控制器使用提供的 Renderer
绘制其内容。
实现者可以选择实现其他函数,例如 handle_zoom
和 handle_drag
,以响应对组件的鼠标交互。
所有方法返回一个bool
(别名ShouldRequestAnimationFrame
)或者一个Result<bool>
。如果方法需要触发重绘,应该返回true
。对于handle_
方法,通常意味着它们修改了应该在图像中反映的缓冲区或统一变量。对于draw
,如果draw
调用本身更新了统一变量或缓冲区,则返回Ok(true)
是创建动画循环的预期方式。
依赖项
~13MB
~224K SLoC