LibGdx中的textureregion和atlasregion有什么区别?

时间:2015-07-05 16:08:00

标签: java libgdx

我想知道区别是什么。并且有人也可以说出纹理和纹理之间的差异。

Greetz Luc

2 个答案:

答案 0 :(得分:3)

通过执行countries = { option.xpath("@label").extract()[0]: option.xpath("@value").extract()[0] for option in response.xpath("//select[@id='airportgroupid']//option") } country_id = countries["Turkey"] 在游戏中加载纹理时,可以在GPU中加载纹理。

TextureRegion,根据你提供的尺寸从纹理中获取一个区域,拥有它的优点是你不必一次又一次地加载纹理,更大的优点是你不必加载每个和GPU上的每个纹理都可以直接通过加载一个大纹理并从中提取子区域(TextureRegions)来实现。

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

TextureAtlas

现在假设您使用Texture Packer打包了100个文件,并且您想要加载一个文件名为“SomePokemon”的图像( TextureAtlas pokemonFrontAtlas = new TextureAtlas(Gdx.files.internal("pokemon//pokemon.pack")); )。

现在从中获取特定的TextureRegion,你可以

Texture

findRegion(String name)从pokemonFrontAtlas.findRegion("SomePokemon") 返回textureRegion。

总而言之,主要区别在于,TextureAtlas是纹理中的区域,而 TextureRegionTextureAtlas的集合。

修改

TextureRegions类包含TextureAtlas类的集合,该类扩展了AtlasRegion类。

有关详细信息,请参阅Javadocs TextureAtlas

答案 1 :(得分:3)

  • Texture是OpenGL 2D纹理的libGDX实现。也就是说:它代表GPU内存中的单个2D纹理,可用于渲染。您通常希望使用尽可能少的纹理(并且特别希望避免在纹理之间切换)。因此,通常在一个较大的Texture中包含多个图像。
  • TextureRegion用于定义Texture的区域。实际上它因此说:“在那些坐标上的纹理和这个图像所在的那些尺寸”。
  • TextureAtlas是一个或多个Texture及其包含的区域的容器。您通常从包含有关图集的所有信息的文件中加载TextureAtlas。此文件通常使用TexturePacker工具创建。请注意,图集可以包含多个纹理文件。
  • AtlasRegionTextureRegion,其中包含有关打包的其他信息。例如。当区域旋转以进行最佳打包时,AtlasRegion包含此信息,因此它知道在绘制时必须撤消该操作。同样,如果在打包地图集时使用空格剥离以进行更紧密的打包,则AtlasRegion包含重现原始图像所需的信息。