質問

Previously I was using simple Texture for sprite based animations, but that did not provide support for images which were not in the power of 2. TexturePacker provides with the ability to load all the images at once, and then fetch the required image from an imageatlas.

That said, I followed a couple of tutorials from the Libgdx wiki and it works well till the loading part. But I suppose during rendering, it is causing some problem. This is how I am loading the images into the texturepacker in my desktop project:

private static final String INPUT_DIR = "../Drop-Android/assets/images";
    private static final String OUTPUT_DIR = "../Drop-Android/assets/image-atlases";
    private static final String PACK_FILE = "pages-info";
    public static void main(String[] args){
        LwjglApplicationConfiguration cfg = new LwjglApplicationConfiguration();
        cfg.title = "Drop";
        cfg.width = 800;
        cfg.height = 480;

        Settings settings = new Settings();
        settings.maxWidth = 512;
        settings.maxHeight = 512;
        TexturePacker2.process(settings, INPUT_DIR, OUTPUT_DIR, PACK_FILE);
        new LwjglApplication(new Drop(), cfg);
    }

Question: Do I have to create pages-info i.e. the PACK_FILE manually in the images-atlases folder? If I do not, it throws File not found exception.

I happen to create pages-info file in the image-atlases folder and the following files are generated: pages-info.png and 'pages-info.atlas'. While, pages-info files is empty, the .png and .atlas files have the images and JSON image data, respectively.

This is what I am using to extract the textureregions out of the pages-info file (which is empty):

TextureAtlas ta = new TextureAtlas(Gdx.files.internal("image-atlases/pages-info"));
        imageOneRegion = ta.findRegion("image1.png");
        imageTwoRegion = ta.findRegion("image2.png");

As expected, it returns a nullpointerexception when drawing the textureregion. I am running out of ideas here, any help and ideas?

役に立ちましたか?

解決

If you use the Texturepacker to generate static Image Atlases, it will also generate the neccessary info page. (libgdx wiki), it is calles something like packName.atlas (try it from commandline)

java -cp gdx.jar;extensions/gdx-tools/gdx-tools.jar com.badlogic.gdx.tools.imagepacker.TexturePacker2 inputDir [outputDir] [packFileName]

If it comes to loading the images you should just load the atlas file, it should not be a json file, but a custom file format.

TextureAtlas ta = new TextureAtlas(Gdx.files.internal("image-atlases/<yourAtlasName>.atlas"));

Then you may refernce the pngs by their filename without postfix.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top