2009-06-20 11 views
6

¿Existe un mecanismo estándar o biblioteca conocida que convierta imágenes .png a texturas PVRTC comprimidas en el iPhone mismo (no durante el desarrollo utilizando las herramientas estándar en OS X).Convierta .png a PVRTC * en * el iPhone

Tengo una serie de texturas .png en mi aplicación, pero el intercambio es un problema. Me gustaría crear variantes PVRTC de .pngs en el dispositivo, en caso de que la memoria disponible sea baja al inicio de la aplicación (o tal vez en la primera carga de la aplicación).

+0

He tomado la respuesta de Barney como la más correcta por ahora. Si alguien tiene detalles específicos sobre cómo convertir realmente los formatos de imagen, cambiaré la respuesta. – bradhouse

Respuesta

2

No he visto ninguna información en la red sobre cómo construir imágenes PVRTC manualmente y según mi leal saber y entender, no hay soporte para esto integrado en el iPhone (y no sería necesario leer el PVRTC archivos).

Para la mayoría de las aplicaciones, tiene poco sentido incluir o construir ambas versiones de los archivos. En condiciones óptimas, las versiones PVRTC deberían ser prácticamente indistinguibles de las versiones PNG y en realidad son solo versiones "pre-procesadas" de los archivos optimizados para la transmisión directa en la memoria de video.

Por lo general, es mejor revisar todas sus imágenes y tomar decisiones sobre cómo empaquetar mejor la imagen para equilibrar la conservación y la calidad de la memoria para todos los usuarios, no solo en situaciones específicas de memoria restringida.

Algunas cosas a tener en cuenta (disculpas si esto es el conocimiento redundante): archivos

  1. PVRTC pueden tener problemas con el complejo alfa imágenes mezcladas como el pre-procesamiento pueden causar artefactos antiestéticas largo de los bordes mezclados.
  2. Los archivos PNG opacos deben tener su canal alfa eliminado en la imagen original (guardando la memoria y la sobrecarga de mezcla).
  3. Para imágenes con un rango limitado de colores, reduzca la imagen de PNG32 a PNG16 o PNG8 para guardar la memoria en el disco.
  4. Si esto es para programas basados ​​en OpenGL, considere usar una versión mejorada de Texture2D (como Cocos2D) que admite formatos de píxeles alternativos como 565 y 4444. Esto puede reducir en gran medida la sobrecarga en la tarjeta gráfica con un impacto mínimo en la imagen calidad, eligiendo cuidadosamente un formato de píxeles que corresponda al equilibrio de colores en la imagen original.
  5. Además para los programas basados ​​en OpenGL, evite las imágenes individuales (320x480) para los fondos ya que esto dará como resultado una textura de 512x512 en la memoria para cada uno. Divida la imagen en piezas más pequeñas o cree una imagen de 512x512 y rellene el espacio adicional con otras imágenes para que solo se cargue una textura.
  6. Al igual que con todo, concéntrese en las imágenes más grandes primero para obtener el mayor beneficio.

Es también digno de mención que, dado que la aplicación va a ser la única cosa en funcionamiento (aparte de las aplicaciones del sistema), la única verdadera sobrecarga de la memoria va a ser una cantidad limitada de espacio "disco". Hacer una segunda copia de todos los archivos de imagen en realidad trabajará en su contra en vez de ayudar.

Barney

+0

Gracias por la respuesta. Ya estaba familiarizado con esos puntos (también uso Cocos2D). Ya uso algunas hojas de sprite de textura de 1024x1024. Probé formatos de píxeles alternativos y PVRTC. Para el uso regular degradan la calidad de mi UI más de lo que estoy dispuesto a permitir. Pero para situaciones de memoria muy baja (por ejemplo, cuando mi aplicación se está ejecutando con <10Mb de memoria libre disponible) quería ejecutar en un modo degradado de calidad. – bradhouse

0

Sería cuidadoso suponiendo que esto te ayude. Una vez que haga referencia a las imágenes una vez, es decir, las cargue en un UIImage, el iPhone comenzará a almacenar en caché sus pngs, tanto si le gustan como si no. Comprimirlos no te servirá para lograr lo que estás buscando aquí, en mi opinión.

+0

No tenía la intención de cargar los archivos .png si PVRTC era más apropiado. Lo primero que quiero que haga la aplicación es examinar la memoria disponible y elegir el formato correcto para usar para el resto de la ejecución de las aplicaciones. Simplemente no deseo enviar dos variantes de la misma imagen en la descarga original. – bradhouse