Dra*_*rus 2 file libgdx texture-atlas
所以在我的游戏中,我有超过 32000 张图片(大小:32x32)。如何存储这么多的图像?还有什么更好的方法:将这些图像作为单独的文件或作为一个大的纹理图集加载?
当您通过在 GPU 中加载纹理来加载游戏中的纹理(图像)时。
因此,假设您有 3200 个图像,并且分别加载它们,这意味着在 GPU 上加载了 3200 个纹理。这很苛刻,会消耗大量内存。
现在让我解释一下什么是 TextureRegion
TextureRegion
,Texture
根据您提供的尺寸从 中取出一个区域,拥有它的优点是您不必一次又一次地加载纹理,更大的优点是您不必将每个纹理都加载到 GPU 上您可以通过加载一个大纹理并从中提取子区域(TextureRegions)来直接完成。
现在因为你想使用TextureRegions
,很难知道每个子图像的尺寸以从纹理表加载它们。所以我们要做的是使用 TexturePacker(一个应用程序)将纹理打包成一个更大的纹理,然后创建一个.pack
文件。它将每个纹理打包成一个图像并创建一个 .pack 文件。现在,当您加载 .pack 文件时,它是使用TextureAtlas
class加载的。例如,想象一个包含所有 pokemon 的 pokemon pack 文件。
TextureAtlas pokemonFrontAtlas = new TextureAtlas(Gdx.files.internal("pokemon//pokemon.pack"));
Run Code Online (Sandbox Code Playgroud)
现在您使用 Texture Packer 打包了 3200 个文件,并且您想要加载一个Texture
文件名为“SomePokemon”的图像()。
现在要从中获取特定的 TextureRegion,您可以
pokemonFrontAtlas.findRegion("SomePokemon")
Run Code Online (Sandbox Code Playgroud)
findRegion(String name) 从TextureAtlas
.
一个TextureAtlas
类包含一个AtlasRegion
扩展TextureRegion
类的类的集合。
有关更多详细信息,请参阅 Javadocs TextureAtlas
归档时间: |
|
查看次数: |
4525 次 |
最近记录: |