java libgdx game-engine textures scaling

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 ...