Entendendo como criar / usar texturas para jogos quando limitado por potência de dois tamanhos


8

Eu tenho algumas perguntas sobre a criação de gráficos para um jogo.

Como um exemplo. Eu quero criar uma moto. (1 pixel = 1 centímetro) Então, minha moto terá 200 de largura e 150 de altura. (200x150) Mas a libgdx só permite carregar tamanhos com a potência de 2 ?! (2,4,8,16, ...)

Primeiro pensei sobre isso. Vou criar minha bicicleta com o tamanho (200x150) e salvá-la como png. Então eu vou abri-lo novamente (por exemplo, com o gimp) redimensione a imagem para um tamanho que use valores com potência de 2 (128x128). Vou carregar isso como textura no programa e definir a largura como 200 e a altura como 150.

Mas não seria um problema? Porque vou perder algumas informações de pixel quando iniciar a primeira conversa.?! Não é?


11
O Libgdx possui um empacotador de texturas que combina suas imagens com algumas imagens maiores (atlas) e ajuda a desenhar apenas a parte desejada.
Matsemann 15/09/12

Respostas:


11

O motivo pelo qual você está limitado ao tamanho de dois em dois é devido à forma como a ram de vídeo funciona. Observe que o que você deve fazer normalmente torna a imagem a próxima potência mais alta de duas (.e. 512x256) e, em seguida, basta usar uma parte dessa imagem para seus gráficos. Você definiria suas coordenadas UV para usar apenas uma subseção da imagem nos triângulos que estiver renderizando.

Se você estiver preocupado com o uso da memória, também poderá usar parte do espaço restante em diferentes objetos e mapear UV por esses objetos para essa parte da textura. Fazer uma textura como essa também é conhecido como "atlas".


4
Vale ressaltar que os atlas também otimizam o desempenho, porque quanto menos você alterna texturas, menos lotes, mais rápido é o desenho.
11133 Gustavo Maciel

3

Você deve usar coordenadas de textura em vez de redimensionar, como desenhar apenas parte de toda a textura. Não sei como funciona no libgdx, mas é comum usar essa abordagem. Outra abordagem é usar o atlas de textura, você tem na memória, por exemplo, 1024x1024 e, quando carrega sua imagem, carrega-a no retângulo do atlas.


0

Você pode converter o tamanho da sua imagem um pouco maior ou menor, de acordo com o tamanho apropriado. Eu usei este link - http://www.garyshood.com/imageconvert/ Você pode usar um tamanho que seria completamente divisível por 2. Por exemplo, se o tamanho da sua imagem for 200, 200/2 = 100; 100 / 2 = 50; 50/2 = 25, então aqui 25 não é divisível por 2. Portanto, 200 não é um tamanho apropriado. Você pode usar 1024, 512, 256, 128 e assim por diante. E então você pode usar partes dessa imagem em seus gráficos. A outra alternativa seria combinar todas as suas texturas no atlas de textura facilmente usando a GUI libgdx Texture Packer e, em seguida, usando a textura desse atlas.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.