libGDX将目录中的所有图像加载到AssetManager中,使用年限

时间:2014-05-26 13:41:09

标签: java libgdx

到目前为止,我已将所有纹理加载到我的AssetManager类中 -

manager.load("images/image_1.png", Texture.class);

这已经完美地工作但我正在开发一个使用大量小图像的项目,并希望使用更通用的方式加载这些文件。我试过了 -

FileHandle[] fileArray = Gdx.files.internal("images").list();
    for(int i=0; i<fileArray.length; i++){
        //if it is not a directory
        if(!(fileArray[i].isDirectory())){
                String stringPath = fileArray[i].path();
            //load file
                manager.load(stringPath, Texture.class);
        }
    }

这可行,但与之前的方法相比需要很长时间。首先为什么?获取FileHandle实例列表是时候了吗?第二,有没有办法将目录中的所有图像加载到资产管理器中作为不需要这么长时间的纹理?

1 个答案:

答案 0 :(得分:4)

不要回答这个问题:

如果你有很多不同的图像,你应该使用TextureAtlas。要创建它们,您可以直接从代码中使用它(请参阅this wiki article),或使用this(有点过时的)GUI。

使用地图册可以立即解决许多问题。

  1. 会减少加载时间。
  2. 它将解决被迫具有功率为2(POT)的尺寸的纹理的问题。默认情况下,地图集的大小通常是有效的。
  3. 由于您将多个图像一次打包成一个大纹理,因此总体尺寸变小(内存消耗减少),因为您只需要将单个图像扩展为POT尺寸,而不是每个图像。
  4. 性能会提高,因为需要的纹理绑定较少。您所做的就是绘制相同纹理的不同部分。