Mi proyecto tiene un lienzo HTML5 en el que se dibujan objetos gráficos repetidamente. Estos objetos cambian rápidamente. Dibujarlos lleva tiempo. ¿Cómo puedo hacerlo más rápido?Canvas HTML5: ¿es mejor volver a dibujar objetos o usar mapas de bits?
Los objetos no son demasiado complejos pero contienen cosas como arcos, degradados, polígonos.
El aspecto de un objeto depende de aproximadamente 10 propiedades, cada una de las cuales tiene uno de aproximadamente 10 valores. Eso significa que solo hay alrededor de 100 apariencias diferentes de las que un objeto puede tener. Es por eso que estoy pensando solo en dibujar cada aparición una vez y luego almacenar en caché un mapa de bits para su reutilización.
Todo debe funcionar en el cliente (es decir, no puedo usar las imágenes ya hechas)
- ¿Cuál sería la mejor manera de hacer esto con HTML5 Canvas?
- ¿Es una buena idea o la sobrecarga de trabajar con bitmaps es mayor que volver a dibujar objetos cada vez?
Probé tus demos y en Firefox7 en win7 Realmente no pude ver mucha diferencia entre el almacenamiento en caché y el no almacenamiento en caché. Todavía estoy de acuerdo con el uso del almacenamiento en caché porque al dibujar "objetos" (polígonos/gradientes) el almacenamiento en caché es MUCHO más rápido. La razón para rotar es mucho más rápido cuando se almacena en caché debido a la compatibilidad de api de renderizado de los navegadores más nuevos – Niko
Además, este artículo es excelente para obtener consejos sobre el rendimiento del lienzo: http://www.html5rocks.com/en/tutorials/canvas/performance/ –
@Niko Necesito actualizar mi demo ya que es bastante antigua, las ganancias de rendimiento principales que ve es cuando agrega unos cientos más en la pantalla. – Loktar