java - LibGDX: filtrado de una TextureRegion escalada
game-engine textures (2)
Tengo varios objetos con diferentes texturas para diferentes estados, así que estoy usando un TextureAtlas
hecho con TexturePacker, y cambiando el tamaño de la TextureRegion
donde lo necesito. Tengo que cambiar el tamaño porque no solo trato de admitir 720p y 1080p, sino que algunos de mis objetos son mosaicos o cursores que cambian de tamaño en función del ancho y la altura del tablero, ya que eso puede cambiar en mi juego, mientras que el tablero siempre ocupe el mismo porcentaje de la pantalla.
Con una Texture
, puedo hacer esto:
texture.setFilter(TextureFilter.Linear, TextureFilter.Linear);
Sin embargo, cuando estoy usando un TextureRegion
no hay una opción para establecer un filtro. Esto da como resultado que el cambio de tamaño de TextureRegion
sea nítido, con bloques y irregular. No es agradable escalar y no parece anti-alias en absoluto.
Esto es bastante frustrante, porque soy lo suficientemente malo para hacer gráficos y ahora, incluso cuando me gusta lo que he hecho, parece horrible. ¿Qué debo hacer para replicar el efecto de TextureFilter.Linear
usando TextureRegion
lugar de Texture
?
Puede abrir su archivo .atlas y cambiar el valor del filter
a Linear, Linear
. O puede usar region.getTexture()
para obtener acceso a la textura a la que pertenece la región, luego llame a setFilter(...)
sobre eso.
Si está empacando usando gdx-tools, entonces tiene que configurar la opción
Settings settings = new Settings();
settings.paddingX = 2;
settings.paddingY = 2;
settings.minWidth = 32;
settings.minHeight = 32;
settings.maxHeight = 1024;
settings.maxWidth = 1024;
settings.stripWhitespaceX = true;
settings.stripWhitespaceY = true;
settings.filterMag = TextureFilter.Nearest;
settings.filterMin = TextureFilter.Nearest;
settings.flattenPaths = true;
TexturePacker2.process(settings, "input directory", "output directory","packName");
System.out.println("PackTextures->main finished.");
o si está usando texture-packer-gui.jar, marque la casilla de verificación linear (min) y linear (max) y estará listo para continuar ...