java - libGDX 将目录中的所有图像循环加载到 AssetManager 中需要很长时间

标签 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 实例列表所花费的时间是多少?其次,有没有一种方法可以将目录中的所有图像作为纹理加载到 Assets 管理器中,而不需要这么长时间?

最佳答案

为了不让这个问题悬而未决:

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

使用图集可以一次解决很多问题。

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

关于java - libGDX 将目录中的所有图像循环加载到 AssetManager 中需要很长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23871510/

相关文章:

java - 从数组列表中选择多个/随机元素

java - java中字符串数组的重复元素

java - Tomcat 6.0.29 和 Apache2 Proxy 将渲染 text/html 作为 text/plain 传递

java - 如何将一个数组的输出循环元素存储在另一个数组中

libgdx - Shadertoy 着色器导入到 libgdx

android - libGDX 的 Looper 错误

java - LuaJ 和 Android : cannot bind class

java - 从 3rd 方库中删除未使用的 Assets

java - 在 LIBGDX 中实现游戏 handle Controller ?

java - 如何将我的 LibGDX 游戏部署到我的网站?