← CC2018

Framebuffers y Bitmaps

Semestre 02, 2026

Utilidad

Es la memoria intermedia entre el renderizado y la pantalla.
Permite construir la imagen completa en memoria antes de mostrarla.
Es fundamental en el software rendering (renderizado por CPU, sin GPU).

Definición

Framebuffer

Región de memoria reservada donde se almacena la imagen que está en proceso de construcción antes de enviarse a la pantalla.

Guarda el valor de color de cada píxel de la imagen.

Importancia

Permite representar escenas complejas sin dibujar directamente sobre la pantalla.
Es la base de técnicas modernas como el doble buffer y el triple buffer.
Optimiza el rendimiento al desacoplar el renderizado de la actualización de la pantalla.

Funcionamiento

El framebuffer actúa como un lienzo digital:

  • Cada píxel se representa con uno o varios bytes según la profundidad de color (color depth).
  • La CPU o la GPU escribe directamente los valores de color de cada píxel.
  • Durante la fase de refresco de la pantalla, el contenido del framebuffer se envía al monitor.

Flujo de datos

  • Los datos generados por los shaders y el pipeline gráfico se almacenan en el framebuffer.
  • En pantallas analógicas clásicas (VGA), un RAMDAC lee el framebuffer y selecciona la señal de cada canal.
  • Conversores digital-analógico (DAC) transforman los valores en señales para la pantalla.
  • La imagen renderizada se muestra en la pantalla.

Las pantallas digitales modernas (HDMI, DisplayPort) reciben la señal digital directamente, sin DAC.

Arquitectura del framebuffer

Color Map

  • El framebuffer es una cuadrícula de memoria que guarda un valor de color por cada píxel.
  • En el modo indexado (palettized), esos valores son índices que apuntan a una tabla de colores.
  • La tabla (Color Map o paleta) contiene los valores RGB completos de cada índice.
Color map y conversores D/A

Conversión digital a analógico

  • El Color Map alimenta cada canal de color (R, G, B) con valores digitales.
  • En pantallas analógicas, cada canal pasa por su propio conversor D/A para generar la señal.
  • Cada canal tiene su propio D/A.

Aplicaciones

Doble buffering: alterna entre dos framebuffers para evitar el parpadeo; con VSync evita el desgarro (tearing).
Post-procesado: efectos como bloom, blur o HDR se aplican sobre el framebuffer ya renderizado.
Captura de pantalla: se lee el contenido del framebuffer para guardar la imagen.

Bitmap

Idea central

El formato más simple para representar imágenes digitales: una cuadrícula de píxeles almacenada en memoria.

Definición

Una imagen rasterizada formada por una matriz de píxeles.
Cada píxel tiene un valor que representa su color.
Se almacena como datos binarios en la memoria o en archivos.
Bitmap como matriz de píxeles

Profundidad de color

La cantidad de bits por píxel determina el número de colores posibles:

BitsColores
1 bit2 colores (blanco y negro)
4/8 bitsPaletas de colores (16 o 256 colores)
16 bitsHigh Color (~65 mil colores)
24 bitsTrue Color (~16.7 millones de colores)

Mayor profundidad de color → mayor tamaño de archivo.

Formato BMP

Bitmap (BMP) es un formato estándar para guardar imágenes rasterizadas:

Introducido por Microsoft junto con Windows 2.0 en 1987, compatible con OS/2 (desarrollado con IBM).
Amplio soporte en sistemas operativos y programas.

Estructura del archivo

File Header: identifica el archivo como BMP e indica su tamaño.
Info Header: dimensiones, profundidad de color y tipo de compresión.
Color Table (opcional): la paleta de colores, en imágenes indexadas.
Pixel Data: la matriz de colores de los píxeles.

Ventajas y desventajas

  • ✅ Simplicidad: fácil de leer y escribir.
  • ✅ Sin pérdida de calidad: normalmente no usa compresión.
  • ✅ Ideal para pruebas y enseñanza.
  • ❌ Archivos grandes: cada píxel ocupa espacio completo.
  • ❌ No soporta transparencias ni capas.