P

PixelForge Tools

Draw calls y batching explicados para principiantes

Actualizado: julio de 2026 · PixelForge Tools

Si tu juego va a tirones aunque los gráficos parezcan sencillos, es muy probable que el problema no sean los polígonos ni las texturas, sino los draw calls. Es uno de los conceptos que más confunde al empezar y, a la vez, uno de los que más afecta al rendimiento. Vamos a entenderlo desde cero.

¿Qué es un draw call?

Un draw call es una orden que la CPU envía a la GPU: "dibuja esto". Cada vez que el motor quiere pintar algo con un material o textura distinta, tiene que preparar la orden, configurar el estado de la GPU y enviarla. El problema no es que la GPU dibuje —eso lo hace rapidísimo— sino la comunicación: preparar y enviar cada orden tiene un coste fijo de CPU. Cientos o miles de draw calls por frame saturan la CPU, que no da abasto preparando órdenes, y el juego se ralentiza aunque la GPU esté ociosa.

Por qué importa tanto en móvil

En un PC potente puedes permitirte muchos draw calls antes de notar problemas. En móvil, el presupuesto es muchísimo menor: pasar de 200 draw calls por frame ya puede causar caídas de FPS en gama media. Por eso los juegos móviles obsesionan con reducirlos — es a menudo el cuello de botella real, por delante de la calidad de las texturas o el número de polígonos.

La solución: batching (agrupar)

El batching consiste en combinar muchos objetos en una sola orden de dibujado. Si diez objetos comparten el mismo material y textura, el motor puede dibujarlos todos con un único draw call en lugar de diez. La clave está en esa condición: para agruparse, los objetos deben compartir material. Ahí es donde entran los atlas.

El atlas de texturas: el mejor amigo del batching

Si cada sprite de tu juego usa su propia imagen, cada uno necesita su propio draw call. Pero si metes todos esos sprites en una sola textura grande —un atlas— y todos usan ese mismo material, el motor los agrupa en muy pocas órdenes. Es la razón principal por la que los atlas mejoran el rendimiento, más allá del ahorro de memoria. Puedes crear los tuyos con el generador de atlas de sprites, que empaqueta tus imágenes en una textura optimizada lista para el batching.

Tipos de batching en los motores

Los motores ofrecen varias formas automáticas de agrupar. El static batching combina objetos que no se mueven (edificios, decorados) en mallas grandes. El dynamic batching agrupa objetos pequeños en movimiento que comparten material. Y el GPU instancing dibuja muchas copias del mismo objeto (árboles, enemigos idénticos, hierba) de una sola vez. En proyectos 2D, el sprite batching agrupa automáticamente los sprites que comparten atlas. Conocerlos te ayuda a estructurar el proyecto para aprovecharlos.

Cómo medir tus draw calls

No optimices a ciegas. Unity tiene el Frame Debugger (Window → Analysis → Frame Debugger), que te muestra cada draw call del frame y por qué no se agrupó con el anterior — información valiosísima. El Profiler muestra el total de draw calls (llamados "Batches" o "SetPass calls"). En Godot, el monitor de rendimiento muestra las "draw calls" en tiempo real. La regla: mide, identifica qué materiales rompen el batching, y unifícalos.

Reglas prácticas para pocos draw calls

Usa atlas para agrupar sprites y texturas relacionadas; comparte materiales siempre que puedas en lugar de crear uno por objeto; marca como estáticos los objetos que no se mueven; usa instancing para elementos repetidos; y limita el número de materiales distintos en pantalla a la vez. Con estas costumbres, un juego 2D con cientos de sprites puede renderizarse en apenas una decena de draw calls — la diferencia entre 30 y 60 FPS en móvil.