Libgdx 纹理图集与文件
Libgdx texture atlas vs files
所以在我的游戏中我有超过 32000 张图像(大小:32x32)。如何存储这么多图像?有什么更好的办法:将这些图像作为单独的文件或作为一个大的纹理图集加载?
当您在游戏中加载纹理(图像)时,您会在 GPU 中加载纹理。
假设您有 3200 张图像并且分别加载它们,这意味着在 GPU 上加载了 3200 个纹理。这很苛刻,会占用大量内存。
现在让我解释一下什么是TextureRegion
TextureRegion
,根据你提供的维度从Texture
中取一块区域,有它的好处是你不用一次又一次地加载纹理,更大的好处您是否不必在 GPU 上加载每个纹理,因为您可以通过加载一个大纹理并从中提取子区域 (TextureRegions) 来直接加载它。
现在因为要使用 TextureRegions
,所以很难知道每个子图像的尺寸以从纹理 Sheet 加载它们。所以我们要做的是使用 TexturePacker(一个应用程序)将纹理打包成一个更大的纹理,然后创建一个 .pack
文件。它会将每个纹理打包到一个图像中并创建一个 .pack 文件。现在,当您加载 .pack 文件时,它是使用 TextureAtlas
class 加载的
例如,想象一个包含所有口袋妖怪的口袋妖怪包文件。
TextureAtlas pokemonFrontAtlas = new TextureAtlas(Gdx.files.internal("pokemon//pokemon.pack"));
现在您使用 Texture Packer 打包了 3200 个文件,并且您想要加载文件名为 "SomePokemon".
的图像 (Texture
)
现在要从中获取特定的 TextureRegion,您可以
pokemonFrontAtlas.findRegion("SomePokemon")
findRegion(String name) returns 你从 TextureAtlas
.
中获取 textureRegion
A TextureAtlas
class 包含 AtlasRegion
class 的集合,它扩展了 TextureRegion
class.
有关详细信息,请参阅 Javadocs
TextureAtlas
所以在我的游戏中我有超过 32000 张图像(大小:32x32)。如何存储这么多图像?有什么更好的办法:将这些图像作为单独的文件或作为一个大的纹理图集加载?
当您在游戏中加载纹理(图像)时,您会在 GPU 中加载纹理。
假设您有 3200 张图像并且分别加载它们,这意味着在 GPU 上加载了 3200 个纹理。这很苛刻,会占用大量内存。
现在让我解释一下什么是TextureRegion
TextureRegion
,根据你提供的维度从Texture
中取一块区域,有它的好处是你不用一次又一次地加载纹理,更大的好处您是否不必在 GPU 上加载每个纹理,因为您可以通过加载一个大纹理并从中提取子区域 (TextureRegions) 来直接加载它。
现在因为要使用 TextureRegions
,所以很难知道每个子图像的尺寸以从纹理 Sheet 加载它们。所以我们要做的是使用 TexturePacker(一个应用程序)将纹理打包成一个更大的纹理,然后创建一个 .pack
文件。它会将每个纹理打包到一个图像中并创建一个 .pack 文件。现在,当您加载 .pack 文件时,它是使用 TextureAtlas
class 加载的
例如,想象一个包含所有口袋妖怪的口袋妖怪包文件。
TextureAtlas pokemonFrontAtlas = new TextureAtlas(Gdx.files.internal("pokemon//pokemon.pack"));
现在您使用 Texture Packer 打包了 3200 个文件,并且您想要加载文件名为 "SomePokemon".
的图像 (Texture
)
现在要从中获取特定的 TextureRegion,您可以
pokemonFrontAtlas.findRegion("SomePokemon")
findRegion(String name) returns 你从 TextureAtlas
.
A TextureAtlas
class 包含 AtlasRegion
class 的集合,它扩展了 TextureRegion
class.
有关详细信息,请参阅 Javadocs TextureAtlas