2013-07-15 19 views
7

Mam kilka obiektów o różnych teksturach dla różnych stanów, więc używam TextureAtlas wykonanego przy użyciu TexturePackera i zmieniając rozmiar TextureRegion tam, gdzie jest to potrzebne. Muszę zmienić rozmiar, ponieważ nie tylko staram się obsługiwać zarówno 720p, jak i 1080p, ale niektóre z moich obiektów to kafelki lub kursory, które zmieniają rozmiar w zależności od szerokości i wysokości planszy, ponieważ może się to zmienić w mojej grze, a płyta zawsze będzie zajmują ten sam procent ekranu.LibGDX: Filtrowanie skalowanego TextureRegion

Z Texture, mogę po prostu to zrobić:

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

Jednak kiedy używam TextureRegion nie ma opcji, aby ustawić filtr. Powoduje to, że te rozmiary zmieniają się w ostre, blokowe i postrzępione. To nie jest ładne skalowanie i wcale nie wydaje się anty-pseudonimem.

To jest dość frustrujące, ponieważ mam dość grafiki, a teraz, nawet gdy podoba mi się to, co zrobiłem, wygląda na kiepską. Co mam zrobić, aby zreplikować efekt TextureFilter.Linear przy użyciu TextureRegion zamiast Texture?

Odpowiedz

13

Możesz otworzyć swój plik .atlas i zmienić wartość filter na Linear, Linear. Lub możesz użyć region.getTexture(), aby uzyskać dostęp do tekstury, do której należy region, a następnie zadzwoń pod numer setFilter(...).

+0

Aby uniknąć ręcznej zmiany pliku .altas za każdym razem, gdy pakujemy obrazy, możemy użyć tego: https://github.com/libgdx/libgdx/wiki/Texture-packer# konfiguracja –

0

Jeśli pakowania przy użyciu GDX-tools to musisz ustawić opcję

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."); 

lub jeśli używasz texture-uszczelniacz-gui.jar następnie zaznaczyć pole wyboru liniowych (min) i liniowe (max) i jesteś dobry, aby przejść ...