首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有Libgdx的TexturePacking -

带有Libgdx的TexturePacking -
EN

Stack Overflow用户
提问于 2013-03-21 08:28:09
回答 2查看 1.7K关注 0票数 0

我的程序打包了一系列图像,并将它们输出为aste.png和aste.atlas。我的打包代码如下:

代码语言:javascript
复制
public void pack(){
    System.out.println("Packing should not be ordinarily called!  If you did not have explicit intentions of Packing, please check ImageAtlas constructor.");
    Settings settings = new Settings();
    settings.maxWidth = 512;
    settings.maxHeight = 512;
    TexturePacker2.process(settings, "E:/Files/Eclipse Projects/StarFighters/StarFighters-android/assets/sprites/" + name, 
            "E:/Files/Eclipse Projects/StarFighters/StarFighters-android/assets/sprites/", name.substring(0,4));
}

我不需要每次运行程序时都打包,这就是为什么我可以使用绝对文件路径(我只会在运行桌面并添加新图像时打包),然而,我只使用绝对文件路径,因为我不知道怎么做。我使用的是android assets文件夹。(桌面链接到android资源文件夹)当我从桌面版本运行它时,它试图转到桌面路径,当我需要它来使用资源路径时,Gdx.files.internal会为我处理。(这个问题对我的程序的功能不是必需的)

一旦我打包了图像,我就会这样做:

代码语言:javascript
复制
atlas = new TextureAtlas(Gdx.files.internal("sprites/aste.atlas"));
public Texture getTex(String imgname){
    return atlas.findRegion(imgname).getTexture();
}

当我尝试和getTex()时,我传入了"sma_a2“作为imgname;

我的assets/sprites/asteroids目录包含以下图像: big_a1.png big_a2.png med_a1.png med_a2.png sma_a1.png sma_a2.png,它们都已成功打包到aste.png和aste.atlas中

我的问题是,无论我在图像中传递什么fname,我收到的都是整个aste.png

我也很好奇,为什么我要使用一个包,而不仅仅是图像,因为我从图像开始,然后打包,最后又得到了图像。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-21 09:06:30

**我的解决方案:**

使用"getTexture“返回整个图像,纹理区域基本上存储一个矩形,该矩形表示打包图像的返回,即单个图像。所以,基本上绘制TextureRegions和绘制纹理没有太大不同,所以我只绘制了TextureRegion。在我的例子中,这涉及到添加一个超类,以便它支持纹理和子类中的TextureRegions。子类指定是使用纹理还是使用布尔值的TextureRegions,并为每个子类调用不同的SpriteBatch.draw()方法。

至于为什么要使用上面的P.T.,如下所示:

地图集的全部要点是,您在其中查找的所有纹理都在“相同”纹理中,但在该纹理中的不同区域。这样你就可以在OpenGL中“绑定”一个大的纹理(这有点昂贵),然后从纹理中渲染出许多不同的部分。

Libgdx中接受纹理的大多数其他API也应该与TextureRegion一起工作。

因此,在我看来,它更有效/更快。

票数 0
EN

Stack Overflow用户

发布于 2013-03-21 08:38:05

不要在findRegion返回的TextureRegion上调用getTexture()

地图集的全部意义在于,你在其中查找的所有纹理都在“相同的”纹理中,但在该纹理中的不同区域。这样你就可以在OpenGL中“绑定”一个大的纹理(这有点昂贵),然后从纹理中渲染出许多不同的部分。

Libgdx中接受Texture的大多数其他API也应该与TextureRegion一起工作。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15537347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档