Pergunta

Eu tenho PVR compressão de textura trabalhando todos felizes e bem em meu jogo de iPhone, mas eu tenho problemas quando ladrilhos múltiplas texturas juntos. Basicamente, eu tenho um grande fundo que é dividida em várias 512x512 azulejos, todos PVR comprimido. Em seguida, eles estão reunidos para olhar como uma imagem de fundo grande. As obras maneira PVR, porque ele não sabe que é suposto ser comprimindo a textura como se fosse realmente uma grande textura -. Ou seja, utilizar as informações de azulejos de um vizinho para determinar como executar a compressão PVR

Não consigo pensar em talvez um par maneiras de fazer isso.

1) De alguma forma, dizer ao programa de linha de comando texturetool para acomodar para outras imagens que serão adjacente.
2) Utilize o programa de linha de comando para gerar um enorme textura PVR que representa toda a imagem, em seguida, de alguma forma, dividir os bytes em várias imagens - provavelmente impossível
. 3) Fazer algum tipo de OpenGL ES trickiness que combina as bordas bem.
4) Faça alguma trickiness onde tenho informações redundantes em cada telha e depois cortar nessas áreas quando a textura é desenhada (por favor, não).

Esperamos que pode fazer um, 2 ou 3, ou existe alguma outra solução bem conhecida.

Foi útil?

Solução

Eu acabei indo com a opção 4. Eu não acho que esta era uma situação onde PVRTC não é apropriado - na verdade, é quase uma necessidade. Quando eu tenho um total de 24 512x512 texturas na memória de uma vez (o que representa um fundo muito grande e primeiro plano), colocando aqueles em descompactado é suicídio. Então eu compressão PVR simplesmente usado como normal, então o meu editado algumas linhas de código no meu algoritmo de azulejos para que eles se sobrepõem e cortar em 15 pixels em cada extremidade. Voila, parece ótimo. Tomou um par de dias e foi muito chato, mas acho que isso é uma boa opção para pessoas que precisam muito grandes fundos de azulejos no iPhone.

Outras dicas

Meu melhor conselho, mas não o que você pediu, é saber quando PVRTC não é apropriado. De longe, a solução mais simples é não usar PVRTC para as telhas. Eu passei muito tempo tentando dobrar PVRTC para trabalhar em situações que simplesmente não é adequado para.

Dito isto,

Ao usar PVRTC, a textura é sempre assumiu a telha (com ele mesmo), assim pixels na borda direita afetar os pixels na borda esquerda (o mesmo com a parte superior e inferior). Então opções 1 ou 2 provavelmente não vai funcionar.

Uma possibilidade é adicionar um canal alfa para as telhas e permitir-lhes a desaparecer em torno das bordas de modo que quando você sobrepor-los, eles desaparecem no outro. Tenha em mente PVRTC tende a trabalhar melhor com fades alfa graduais. bordas alfa rígidos muitas vezes têm artefatos em PVRTC.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top