sgr*_*ove 5 asynchronous settimeout rust requestanimationframe wasm-bindgen
我的 rust 程序正在管理 2d html canvas 上下文的内存,我试图达到 ~60fps。我可以很容易地计算出每帧之间的增量,结果大约是大约 5 毫秒。
我不清楚如何让我的 Rust webassembly 程序在剩余的 11 毫秒内进入睡眠状态。一种选择是让 JavaScript 在每个上调用 RustrequestAnimationFrame并将其用作驱动程序,但我很想尽可能将其全部保留在 Rust 中。
setTimeout(renderNext, 11)在编译到 wasm 目标时,我正在有效地寻找与 JavaScript 等效的 Rust 。
setTimeout(renderNext, 11)当编译到 wasm 目标时,我实际上正在寻找 JavaScript 的 Rust 等价物。
有几个 Rust crate 与 JavaScript Web API 绑定,最著名的是web-sys. 查看其中一个重载的文档setTimeout。
但这并不是真正的 Rust 等价物,因为它非常直接地调用 JS 函数。但您将无法解决这个问题:睡眠或获取当前时间都是主机环境必须提供的功能。它们不能仅用原始语言来实现。
一种选择是让 JavaScript 调用 Rust,并将
requestAnimationFrame其用作驱动程序,但如果可能的话,我很好奇将其全部保留在 Rust 中。
是的,您应该使用requestAnimationFrame(链接到web-sys文档)。这比自己计时要好得多。特别是,当选项卡未处于活动状态时,此方法还将暂停调用您的代码等。在桌面环境中,您会执行相同的操作:要求主机环境(即操作系统,通常通过 OpenGL 等)将您的程序与屏幕刷新同步。
| 归档时间: |
|
| 查看次数: |
1282 次 |
| 最近记录: |