Libgdx 纹理图集与文件



所以在我的游戏中,我有超过32000张图像(大小:32x32)。如何存储这么多图像?还有什么更好的:将这些图像作为单独的文件加载还是作为一个大的纹理图集加载?

当您通过执行在 GPU 中加载纹理来加载游戏中的纹理(图像)时。

因此,假设您有 3200 张图像并单独加载它们,这意味着 GPU 上加载了 3200 个纹理。这很苛刻,会消耗大量内存。

现在让我解释一下什么是TextureRegion

TextureRegion,根据

您提供的维度从Texture中获取一个区域,拥有它的好处是您不必一次又一次地加载纹理,更大的优势是您不必在GPU上加载每个纹理,因为您可以通过加载一个大纹理并从中提取子区域(TextureRegions)直接完成。

现在因为你想使用 TextureRegions ,很难知道每个子图像的尺寸以从纹理表加载它们。所以我们要做的是使用TexturePacker(一个应用程序)将纹理打包成一个更大的纹理,然后创建一个.pack文件。它会将每个纹理打包到一个图像中并创建一个 .pack 文件。现在,当您加载 .pack 文件时,它是使用 TextureAtlas 类加载的例如,想象一个口袋妖怪包文件,其中包含所有口袋妖怪。

 TextureAtlas  pokemonFrontAtlas = new TextureAtlas(Gdx.files.internal("pokemon//pokemon.pack"));

现在你使用纹理打包器打包了3200个文件,你想加载一个文件名为"SomePokemon"的图像(Texture)。

现在要从中获取特定的纹理区域,您可以

pokemonFrontAtlas.findRegion("SomePokemon")

findRegion(字符串名称) 从TextureAtlas返回纹理区域。

TextureAtlas类包含扩展TextureRegionAtlasRegion类的集合。

有关更多详细信息,请参阅 Javadocs纹理图集

最新更新