Texturepacker Libgdx ❲NEWEST • 2025❳
If you’ve been developing with LibGDX for more than a week, you’ve likely heard the mantra: “Batch your draw calls!”
assets-raw/ ui/ buttons/ backgrounds/ characters/ player/ enemy/ Every folder you point TexturePacker at becomes one "Atlas" (one .atlas file + one .png ). Step 3: Running the Packer (The LibGDX Way) Inside your LibGDX project (usually in your core module or a standalone desktop launcher), write a small one-off packing script. texturepacker libgdx
Run this every time you change your art. Put it in a Gradle task so you never forget. Step 4: Loading the Atlas in LibGDX Once packed, you get two files: ui-atlas.atlas and ui-atlas.png . Copy these to your Android/assets folder. If you’ve been developing with LibGDX for more
// Before Texture playerTex = new Texture("player.png"); // After (no logic change needed in your entity class) TextureRegion playerTex = gameAtlas.findRegion("player"); 1. 9-Patch (Scalable UI) Name your raw files with .9 (e.g., panel.9.png ). In TexturePacker GUI, enable StripWhitespace and Ignore blanks . LibGDX will automatically load them as NinePatch objects. 2. Pixel Perfect (Retro Games) If you make pixel art, turn off filtering (set to Nearest ) and turn on edgePadding = false to prevent bleeding between sprites. 3. Debug Visualization LibGDX has a built-in debugger for atlases. Render this to see if your packing is efficient (red = empty space): Put it in a Gradle task so you never forget
// Instead of loading 100 textures... TextureAtlas gameAtlas = new TextureAtlas(Gdx.files.internal("ui/ui-atlas.atlas")); // Grab a single region TextureRegion buttonRegion = gameAtlas.findRegion("green_button_01");