Aprendí cómo puedo usar el lienzo de rust y wasm-bindgen (ejemplo como este:https://rustwasm.github.io/wasm-bindgen/examples/2d-canvas.html ). Es bastante rápido, pero supongo que aún debe haber una sobrecarga para cada llamada de lienzo, ¿verdad? Entonces, la solución adecuada para un juego basado en lienzo sería: llamadas de dibujo de lienzo desde una función de javascript, lógica de juego que se ejecuta en rust/wasm, y llamar a la función de dibujo js con datos de estado del juego.
Entonces, debería evitar miles de llamadas de sorteo de lienzo de wasm-bindgen para un rendimiento óptimo, ¿verdad?
Es realmente difícil decir qué enfoque sería el mejor. Si mantiene el lienzo en código oxidado, entonces debe preocuparse por mantener el estado sincronizado con las funciones de llamada. En este caso, creo que el bucle de eventos tendría que trabajar duro.
El navegador es nuestra capa de visualización. Así que mantenga el trabajo de visualización en javascript y simplemente llame al backend. Es como crear una API tranquila y simplemente enviar solicitudes de API al punto final, obtenemos los datos y javascript actualiza la interfaz de usuario. En este enfoque, debe usar raw pointers para acceder a la memoria en código oxidado y este no es un enfoque seguro.
Una de las ventajas de mantener el lienzo en el código de óxido es que puede enviar este código a diferentes plataformas, por lo que su código de óxido será compacto y reutilizable.