Volver al blog
Formatos

Formato PKM y ETC: Guía completa

10 lectura mínima

PKM es un formato contenedor simple para texturas comprimidas con ETC, ampliamente utilizado en plataformas Android y OpenGL ES. Este artículo proporciona una guía completa para comprender la estructura del formato PKM, las versiones de compresión ETC/ETC2 y cómo utilizarlas de forma eficaz.

¿Qué es el formato PKM?

PKM (abreviatura de 'PoKeMon', nombrado así por Ericsson) es un formato contenedor simple diseñado específicamente para almacenar datos de textura comprimidos con ETC. A diferencia de formatos complejos como KTX o DDS, PKM tiene una estructura mínima con sólo un encabezado de 16 bytes seguido de datos de imagen comprimidos.

El formato fue creado para proporcionar una forma liviana de almacenar y cargar texturas comprimidas con ETC en dispositivos móviles. Su simplicidad hace que sea fácil de implementar y analizar, prácticamente sin gastos generales más allá de los propios datos de textura comprimidos.

Estructura de archivos PKM

  • Encabezado de 16 bytes: número mágico (PKM), versión, formato, dimensiones
  • Datos de textura comprimidos: bloques ETC/ETC2 sin procesar

Versiones de compresión ETC

Hay dos versiones principales de compresión ETC, cada una con capacidades diferentes:

ETC1 (Compresión de textura Ericsson 1)

El estándar ETC original, que admite solo canales de color RGB con una relación de compresión fija de 4:1. Ampliamente compatible con dispositivos Android desde OpenGL ES 2.0.

Apoyo: Todos los dispositivos OpenGL ES 2.0+

Relación de compresión: 4:1 fijo (4 bits por píxel)

ETC2 (Compresión de textura Ericsson 2)

Sucesor mejorado de ETC1, agregando soporte RGBA con múltiples opciones de formato. Proporciona mejor calidad y soporte para canales alfa mientras mantiene la compatibilidad con versiones anteriores.

Apoyo: OpenGL ES 3.0+, Vulkan

Relación de compresión: 4:1 a 8:1 dependiendo del formato

Variantes de formato PKM

PKM puede contener diferentes tipos de formato ETC:

ETC1 RGB

Formato original, solo RGB, sin canal alfa

ETC2 RGB

Compresión RGB mejorada con mejor calidad que ETC1

ETC2 RGBA

Compatibilidad total con RGBA con compresión 8:1 (8 bits por píxel)

ETC2 RGB + Perforación Alfa

RGB con alfa de 1 bit, manteniendo la compresión 4:1

Ventajas de PKM/ETC

Soporte universal para Android

Se garantiza que ETC1 será compatible con todos los dispositivos Android, lo que lo convierte en el formato de compresión más portátil para el desarrollo de Android.

Relación de compresión fija

Uso de memoria predecible con relaciones de compresión consistentes de 4:1 u 8:1, lo que simplifica los cálculos del presupuesto de memoria.

Buena relación calidad-tamaño

ETC2 proporciona una excelente calidad visual para la mayoría de los tipos de texturas, comparable a los formatos de escritorio como DXT/BCn.

Decodificación de hardware

Descompresión directa de GPU sin sobrecarga de CPU durante el renderizado, lo que permite un muestreo de texturas eficiente.

Limitaciones y consideraciones

Límites de calidad ETC1

ETC1 puede mostrar artefactos visibles en texturas con detalles de alta frecuencia o gradientes suaves. Considere usar ETC2 para obtener una mejor calidad.

Sin alfa en ETC1

ETC1 no admite canales alfa. Debe utilizar ETC2 RGBA o almacenar alfa por separado si se dirige a dispositivos OpenGL ES 2.0.

Funciones avanzadas limitadas

PKM no admite mapas mip, mapas de cubos ni matrices de texturas. Utilice los formatos KTX o KTX2 para estas funciones avanzadas.

Cómo utilizar el formato PKM

Usar archivos PKM en sus proyectos es sencillo:

Codificación a PKM

  1. Sube tu imagen PNG/JPG (debe tener dimensiones potencia de 2 o múltiplo de 4)
  2. Elija entre ETC1 RGB o ETC2 RGB/RGBA según sus necesidades
  3. Descargue el archivo .pkm generado e intégrelo en su proyecto

Decodificar archivos PKM

  1. Sube tu archivo .pkm para verificar su contenido
  2. Obtenga una vista previa de la textura descomprimida y verifique la calidad.
  3. Exporte a PNG si necesita editar o inspeccionar la textura.

Mejores prácticas

  • Utilice ETC1 RGB para obtener la máxima compatibilidad en todos los dispositivos Android (OpenGL ES 2.0+)
  • Prefiera ETC2 RGBA cuando apunte a dispositivos modernos (OpenGL ES 3.0+) que necesitan canales alfa
  • Asegúrese de que las dimensiones de la textura sean múltiplos de 4 (ETC1) o potencia de 2 para obtener la mejor calidad
  • Para texturas que requieren alfa en dispositivos más antiguos, considere usar texturas en escala de grises separadas
  • Pruebe texturas comprimidas en dispositivos de destino reales: la percepción de la calidad varía según el tipo de contenido

Conclusión

PKM con compresión ETC/ETC2 es la opción estándar para el desarrollo de OpenGL ES móvil y Android. Su soporte universal, rendimiento predecible y buena calidad lo convierten en un excelente valor predeterminado para la compresión de texturas móviles.

Nuestras herramientas de codificación y decodificación PKM en línea facilitan el trabajo con texturas comprimidas por ETC sin instalar herramientas de línea de comandos o SDK. Ya sea que esté creando nuevas texturas o inspeccionando las existentes, estas herramientas lo ayudarán a optimizar su canal de gráficos móviles.

Lecturas adicionales y referencias

Obtenga más información sobre los formatos ETC y PKM:

Pruebe nuestras herramientas