05 Capítulo 5 · Lección 4

El Renderer

Redactado por
Author Sebastian V.
Fecha de publicación

25/01/2026

Tiempo de lectura

6 min

Tema

Three.js

¿Qué es el Renderer?

Hemos construido nuestro estudio de cine (Scene) y posicionado nuestra cámara (Camera). Pero nadie puede ver nada sin un proyector. El WebGLRenderer es el motor incansable que procesa todas las matemáticas de luces, formas y cámara, y decide qué color exacto pintar en cada píxel de tu pantalla.

Calidad vs Rendimiento

El Renderer te da el poder absoluto sobre la calidad visual. Siendo desarrolladores creativos, queremos que todo se vea espectacular, pero debemos tener cuidado de no incendiar la tarjeta gráfica del usuario.

Antialiasing

En el mundo digital, las líneas diagonales se construyen con píxeles cuadrados, lo que produce "bordes de sierra" (pixeles dentados). El antialias: true es un proceso matemático que suaviza estos bordes mezclando los colores. Es crucial para un aspecto premium.

Device Pixel Ratio

Los teléfonos modernos y pantallas Retina (Mac) tienen más píxeles físicos por cada píxel "lógico" de CSS. Si no le avisas a Three.js sobre esto, tu 3D se verá borroso en pantallas caras. El método setPixelRatio(window.devicePixelRatio) soluciona esto instantáneamente.

Responsividad

En la web clásica, CSS se encarga de adaptar el diseño si la ventana cambia de tamaño. En WebGL, el canvas actúa como una imagen estática. Si el usuario gira el teléfono o cambia el tamaño del navegador, tú eres el responsable de actualizar el tamaño del renderer y la proporción de la cámara.

Consejo profesional

En pantallas de muy alta resolución (como un iPhone 15 o un MacBook), el pixel ratio puede ser 3 o más. Renderizar 3D complejo en esas densidades puede causar lag severo. Un truco ninja en producción es limitar el pixel ratio a 2: renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));

El Setup Perfecto del Renderer

> _
// 1. Instanciación con Antialias (bordes suaves) y Alpha (fondo transparente)
const renderer = new THREE.WebGLRenderer({ 
  antialias: true, 
  alpha: true 
});

// 2. Establecer el tamaño exacto de la pantalla
renderer.setSize(window.innerWidth, window.innerHeight);

// 3. Soporte para pantallas Retina / Móviles
renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));

// 4. Inyectar el canvas mágico en nuestro HTML
document.body.appendChild(renderer.domElement);

// 5. El Evento de Resize (Crucial)
window.addEventListener('resize', () => {
  // Actualizar cámara
  camera.aspect = window.innerWidth / window.innerHeight;
  camera.updateProjectionMatrix();
  
  // Actualizar renderer
  renderer.setSize(window.innerWidth, window.innerHeight);
});
> _

Una geometría suave y de alta definición sobre un fondo transparente de la web.

Errores comunes

01
Bordes de sierra Olvidaste pasar { antialias: true } al crear el WebGLRenderer. Tu experiencia se verá barata y antigua.
02
Imágenes borrosas en móvil Si no configuras el setPixelRatio, el móvil estirará los pocos píxeles básicos sobre su pantalla de alta densidad, viéndose borroso.
03
El canvas no se adapta No añadiste el event listener de resize. El tamaño del canvas se queda fijo con el tamaño que tenía la ventana al cargar.

Practica lo aprendido

Configura un Renderer profesional listo para producción.

01 Instancia el WebGLRenderer activando antialias y alpha.
02 Ajusta el tamaño y el devicePixelRatio con Math.min(..., 2).
03 Añade el domElement al body de tu documento.
04 Implementa el evento resize de la ventana, es obligatorio en todo proyecto web.