Um único atlas de textura?

8

Quando quero usar o atlas de textura, devo tentar colocar todos os meus sprites em um único atlas de textura? Ou há momentos em que eu deveria ter vários atlas de textura menores?

Aaron
fonte

Respostas:

7

Como muitas coisas no software, é um ato de equilíbrio. Menos trocas de textura são boas, mas obter texturas muito grandes também pode prejudicar o desempenho. Além disso, as folhas de sprite com um grande número de sprites podem ser difíceis de gerenciar logisticamente.

Para ajudar a gerenciar folhas de sprite maiores, é recomendável manter os sprites separados e juntá-los a uma folha de sprite para uso em seu jogo. Você pode usar ferramentas (ambas com nomes muito inteligentes) como:

O uso dessas ferramentas permitirá garantir que as animações que pertencem juntas terminem na mesma planilha de sprites. Dessa forma, você não está alternando entre texturas no meio da animação.

Infelizmente, não existe um padrão universal para o tamanho máximo de textura. Não apenas isso, mas varia de hardware para hardware, não apenas entre plataformas gráficas. No entanto, existem máximos que as plataformas gráficas podem suportar, mas isso não significa que o hardware seja compatível. Certifique-se de criar uma verificação com o seu jogo para garantir que você não carregue uma textura muito grande.

MichaelHouse
fonte
Pretendo fazer um jogo multiplataforma (principalmente para desktops, embora possivelmente iOS). Quanto devo esperar que o tamanho máximo da textura varie?
Aaron
11
Não sei muito sobre as limitações de dispositivos móveis. Para desktops, depende realmente de qual faixa de hardware você deseja oferecer suporte. Eu acho que 2048x2048 é um bom número médio a alto que a maioria dos desktops suportaria. Para iOS, este tópico parece promissor.
MichaelHouse
Por que adicionar uma ferramenta desnecessária ao pipeline de conteúdo quando você pode criar os atlas de textura da mesma forma em tempo de execução via glTexSubImage?
API-Beast
Sem mencionar que você pode ser muito mais flexível dessa maneira, porque pode consultar o tamanho máximo da textura e não precisa adivinhar.
API-Beast
4
(1) O TexSubImage geralmente é terrivelmente lento no tempo de execução - você precisa de uma seleção de parâmetros muito cuidadosa; (2) você ainda precisa de um método para selecionar para onde as imagens vão no atlas que o TexSubImage não fornecerá; (3) O TexSubImage não resolverá o problema de qual planilha de sprite colocar as imagens; (3) TexSubImage que não dar-lhe a capacidade de consultar o tamanho máximo - glGet faz e ainda pode ser usado mesmo com uma ferramenta externa.
Maximus Minimus
5

Quanto menos texturas, melhor. Então, um grande problema seria o melhor. No entanto, dependendo da sua plataforma e idioma, há um limite de tamanho para uma imagem. Portanto, se 2048 x 2048 px é o maior que sua imagem pode ter e seu atlas de textura é maior que isso, seria melhor ter dois atlas menores.

eazimmerman
fonte
3
+1 e - se você precisar de mais de um atlas - certifique-se de agrupar as imagens que serão usadas juntas no mesmo atlas, caso contrário, cada chamada de empate pode precisar mudar de um atlas para outro e todo o exercício será você não ganha nada.
Maximus Minimus