Formato PKM y ETC: Guía completa
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
- Sube tu imagen PNG/JPG (debe tener dimensiones potencia de 2 o múltiplo de 4)
- Elija entre ETC1 RGB o ETC2 RGB/RGBA según sus necesidades
- Descargue el archivo .pkm generado e intégrelo en su proyecto
Decodificar archivos PKM
- Sube tu archivo .pkm para verificar su contenido
- Obtenga una vista previa de la textura descomprimida y verifique la calidad.
- 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:
- Compresión de textura ETC (Khronos) - Especificación oficial de OpenGL ES y documentación de formato ETC
- Compresión de texturas de Ericsson (Wikipedia) - Historia y detalles técnicos de los algoritmos de compresión ETC.
- Gráficos de Android: compresión de texturas - Guía oficial de Android sobre formatos de compresión de texturas
- Especificación del formato de archivo PKM - Especificación técnica para el formato de contenedor PKM