Pregunta

Tengo la compresión de texturas PVR funcionando muy bien en mi juego de iPhone, pero tengo problemas al agrupar varias texturas. Básicamente, tengo un fondo muy grande que se divide en múltiples mosaicos de 512x512, todos con PVR comprimido. Luego se unen para parecerse a una gran imagen de fondo. La forma en que funciona PVR, porque no sabe que se supone que está comprimiendo la textura como si fuera una textura realmente grande, es decir, use la información en mosaico de un vecino para determinar cómo realizar la compresión PVR.

Puedo pensar en quizás un par de formas de hacer esto.

1) De alguna manera, dígale al programa de línea de comandos de texturetool que acomode otras imágenes que serán adyacentes.
2) Use el programa de línea de comandos para generar una gran textura PVR que represente la imagen completa, luego divida los bytes en varias imágenes, probablemente imposible.
3) Realice algún tipo de truco de OpenGL ES que combine bien los bordes.
4) Haga algunos trucos donde tenga información redundante en cada mosaico y luego recorte esas áreas cuando se dibuje la textura (por favor no).

Espero poder hacer 1, 2 o 3, o hay alguna otra solución bien conocida.

¿Fue útil?

Solución

Terminé con la opción 4. No creo que esta sea una situación en la que PVRTC no sea apropiado; de hecho, es casi una necesidad. Cuando tengo un total de 24 texturas de 512x512 en la memoria a la vez (que representan un fondo y un primer plano muy grandes), ponerlos sin comprimir es suicidio. Así que simplemente utilicé la compresión PVR de forma normal, luego edité algunas líneas de código en mi algoritmo de mosaico para que se superpongan y recorten en 15 píxeles en cada extremo. Voila, se ve genial. Tomó un par de días y fue bastante molesto, pero creo que esta es una buena opción para las personas que necesitan fondos en mosaico muy grandes en el iPhone.

Otros consejos

Mi mejor consejo, pero no lo que pediste, es saber cuándo PVRTC no es apropiado. Con mucho, la solución más simple es simplemente no usar PVRTC para esos mosaicos. He pasado mucho tiempo tratando de doblar PVRTC para trabajar en situaciones para las que simplemente no es adecuado.

Dicho eso,

Cuando se usa PVRTC, siempre se asume que la textura se enlosa (consigo misma), por lo tanto, los píxeles en el borde derecho afectan a los píxeles en el borde izquierdo (lo mismo con la parte superior e inferior). Por lo tanto, las opciones 1 o 2 probablemente no funcionen.

Una posibilidad es agregar un canal alfa a los mosaicos y permitir que se desvanezcan alrededor de los bordes para que cuando se superpongan, se desvanezcan entre sí. Tenga en cuenta que PVRTC tiende a funcionar mejor con desvanecimientos alfa graduales. Los bordes alfa duros a menudo tienen artefactos en PVRTC.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top