LibGDX: фильтрация масштабированного TextureRegion

у меня есть несколько объектов с разными текстурами, для разных государств, поэтому я использую TextureAtlas сделано с TexturePacker, и изменение размера TextureRegion где мне это нужно. Я должен изменить размер, потому что я не только пытаюсь поддерживать как 720p, так и 1080p, но некоторые из моих объектов-это плитки или курсоры, которые изменяют размер в зависимости от ширины и высоты доски, так как это может измениться в моей игре, тогда как доска всегда будет занимать тот же процент экрана.

С Texture, Я могу просто сделайте так:

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

однако, когда я использую TextureRegion нет возможности установить фильтр. Это приводит к этим TextureRegions изменение размера как острые, блочные и зубчатые. Это не очень приятное масштабирование, и это вообще не похоже на анти-псевдоним.

это довольно расстраивает, потому что я достаточно плох в создании графики, и теперь, даже когда мне нравится то, что я сделал, это выглядит дерьмово. Что мне сделать, чтобы воспроизвести эффект TextureFilter.Linear С помощью TextureRegion вместо Texture?

2 ответов


вы можете открыть свой .atlas файл и изменить filter значение Linear, Linear. Или вы можете использовать region.getTexture() чтобы получить доступ к текстуре, к которой принадлежит области, то позвоните setFilter(...) об этом.


Если вы упаковываете с помощью 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 затем установите флажок для linear(min) и linear (max), и вам хорошо идти...