Hola, mi nombre es Ilya Chernevsky, y trabajo como desarrollador web en Evolution Company y creo el front end de juegos. Hoy, quiero contarles sobre mi experiencia usando el elemento canvas en juegos y aplicaciones web, principalmente, para aumentar el rendimiento.
Veamos este elemento en uno de los juegos de Evolution, contiene aproximadamente 4,000 elementos DOM, básicamente, estos son elementos SVG con sus propios estilos, atributos, clases, tamaños, posicionamiento, etcétera. Podrías decir que 4,000 no es tanto, quizás, pero ¿sabes qué podría ser mejor? Creo que mejor es tener solo un elemento DOM.
Primero, ¿qué es canvas? Y su núcleo canvas es un área rectangular donde podemos crear gráficos dinámicamente usando JavaScript. Dibujar en canvas proporciona una forma de bajo nivel para mostrar gráficos en el navegador. Las operaciones DOM en el navegador se consideran bastante lentas, por eso, por ejemplo, el equipo de React desarrolló el concepto de DOM virtual para minimizar el manejo de elementos DOM.
Veamos las ventajas y desventajas del canvas. Comencemos con las ventajas. Primero que nada, y creo que lo más importante, es el rendimiento y la velocidad. Solo tenemos un elemento DOM. Segundo es el ahorro de memoria, ya que no hay necesidad de almacenar información sobre un gran número de elementos DOM. Y control, el desarrollador puede controlar cada píxel en el área de dibujo. Ahora veamos las desventajas existentes de este enfoque. Una de las más obvias son las animaciones. Son más difíciles de implementar. Por supuesto, no podemos usar animación y la propiedad de transición de CSS. En el caso de los elementos DOM, por ejemplo, cuando se mueven, el navegador mismo borra el objeto antiguo y dibuja el nuevo en un nuevo lugar. Y en el caso de Canvas, el desarrollador se ve obligado a dibujar independientemente cada cuadro usando la función request animation frame de la web API del navegador. Y el segundo inconveniente es la complejidad. En general, los elementos DOM son más fáciles de manipular que los píxeles y usar la Canvas API es más difícil. En el caso de los elementos DOM, el navegador hace parte del trabajo por nosotros. Y finalmente, características de trabajar con pantallas, con la pixelación del dispositivo, más de una. Por ejemplo, cuando trabajamos con smartphones, tienes que estar atento a las dimensiones del Canvas. Y a veces esto puede llevar a artefactos inesperados. Y en general, te ves obligado a pensar más sobre otras características de Canvas que pueden no ser inmediatamente obvias.
Cuando la gente habla de Canvas, a menudo se refieren a la Canvas API y la interfaz de contexto de renderizado 2d de Canvas. Esta es la forma más simple y de bajo nivel para renderizar en el navegador. Sin embargo, si deseas utilizar todo el poder de la GPU, entonces deberías considerar usar WebGL. WebGL API se usa con el mismo elemento HTML canvas, pero para renderizar se usa un contexto de dibujo diferente, contexto de renderizado WebGL, y también usa una API diferente, WebGL API.
Comments