2013-07-15 42 views
7

我有幾個對象具有不同的紋理不同的狀態,所以我使用TexturePacker製作的TextureAtlas,並調整TextureRegion我需要它的位置。我必須調整大小,因爲我不僅要支持720p和1080p,而且我的一些對象是根據棋盤的寬度和高度來調整大小的棋盤或遊標,因爲這可以在我的遊戲中改變,而棋盤將始終佔據屏幕的相同百分比。LibGDX:過濾縮放紋理區域

隨着Texture,我可以做到這一點:

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

然而,當我使用的是TextureRegion沒有選項來設置過濾器。這導致這些TextureRegion的尺寸變得尖銳,塊狀和鋸齒狀。這不是很好的縮放,它似乎根本沒有反別名。

這很令人沮喪,因爲我在製作圖形方面已經夠糟糕了,現在即使當我喜歡我製作的圖像時,它也顯得很糟糕。我如何使用TextureRegion而不是Texture複製TextureFilter.Linear的效果?

回答

13

您可以打開.atlas文件並將filter的值更改爲Linear, Linear。或者您可以使用region.getTexture()訪問該區域所屬的紋理,然後在該紋理上調用setFilter(...)

+0

爲避免每次我們打包圖像時手動更改.altas文件,我們可以使用這個:https://github.com/libgdx/libgdx/wiki/Texture-packer#組態 –

0

如果您正在使用GDX-工具打包,那麼你必須設置的選項

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

,或者如果你正在使用的紋理的封隔器gui.jar然後勾選線性(分鐘)和線性(複選框最大),你很好去...