LibGDX: 对缩放后的TextureRegion进行过滤

8
我有几个不同纹理的对象,用于不同状态。因此,我使用了由TexturePacker制作的TextureAtlas,并在需要时调整TextureRegion的大小。我必须进行调整大小,因为我不仅要支持720p和1080p,而且我的某些对象是瓦片或光标,其大小基于棋盘的宽度和高度进行调整,因为在我的游戏中,棋盘的大小可能会改变,而棋盘始终占据屏幕相同的百分比。

对于一个Texture,我可以只需执行以下操作:

texture.setFilter(TextureFilter.Linear, TextureFilter.Linear);

然而,当我使用TextureRegion时,没有设置过滤器的选项。这导致这些TextureRegion调整大小时变得锐利、方块状和有锯齿。它不是很好的缩放效果,也似乎完全没有反锯齿。

这真的很令人沮丧,因为我已经不太擅长制作图形了,现在即使我喜欢自己做的东西,看起来也很糟糕。我该怎么做才能使用TextureRegion复制出TextureFilter.Linear的效果,而不是使用Texture

2个回答

14

您可以打开您的 .atlas 文件并将 filter 的值更改为 Linear, Linear。或者您可以使用 region.getTexture() 来访问区域所属的纹理,然后在该纹理上调用 setFilter(...)


为了避免每次打包图像时手动更改 .altas 文件,我们可以使用以下方法:https://github.com/libgdx/libgdx/wiki/Texture-packer#configuration - Carlo Espino

0
如果您正在使用gdx-tools进行打包,则必须设置选项。
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.");

如果您正在使用texture-packer-gui.jar,则勾选线性(min)和线性(max)复选框即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接