gpt4 book ai didi

android - AndEngine - 场景中所有 textureRegion 的一个 textureAtlas;可能的?

转载 作者:行者123 更新时间:2023-11-29 17:59:33 27 4
gpt4 key购买 nike

我注意到我可以为一个 textureRegion 保留一个图集,尽管我可以多次绘制相同的区域作为 Sprite 。是否可以将所有 textureRegions 保留在一个场景中的一个 textureAtlas 中?

我的特殊情况是,我生成图像而不是使用任何图像文件。我使用 BaseBitmapTextureAtlasSourceDecorator 执行此操作并从 IBitmapTextureAtlasSource 生成区域。

最佳答案

是的。不过,通常情况下,您应该只创建最大宽度/高度为 1024 的图集(顺便说一句,这些尺寸必须是 2 的幂),以提高效率。

另一方面,我发现使用 BuildableBitmapTextureAtlas 更容易。使用这种图集,您不必指定在图集中放置纹理的位置。我认为它也可能在某种程度上解决了 sprite-bleeding 问题(虽然不确定)。确实是同一个想法......这是我项目中的一个例子:

BuildableBitmapTextureAtlas buttonAtlas = new BuildableBitmapTextureAtlas(getTextureManager(), 512, 512, TextureOptions.BILINEAR_PREMULTIPLYALPHA); 
model.moveLeftButtonTR = BitmapTextureAtlasTextureRegionFactory.createFromAsset(buttonAtlas, this, "moveleft_button.png");
model.moveRightButtonTR = BitmapTextureAtlasTextureRegionFactory.createFromAsset(buttonAtlas, this, "moveright_button.png");
model.handleBlockButtonTR = BitmapTextureAtlasTextureRegionFactory.createFromAsset(buttonAtlas, this, "handleblock_button.png");
model.restartButtonTR = BitmapTextureAtlasTextureRegionFactory.createFromAsset(buttonAtlas, this, "restart_button.png");

try{ buttonAtlas.build(new BlackPawnTextureAtlasBuilder<IBitmapTextureAtlasSource, BitmapTextureAtlas>(0, 1, 1)); }
catch(Exception e){ e.printStackTrace(); }
buttonAtlas.load();

对于您的情况,请使用以下方法:

BitmapTextureAtlasTextureRegionFactory.createFromSource(BuildableBitmapTextureAtlas atlas, IBitmapTextureAtlasSource source)

总而言之,图集只包含您添加到其中的所有纹理。然后将这个图集加载到内存中,以便可以快速检索这些纹理。然后,您可以使用纹理的单个实例来构建任意数量的独立 Sprite 。

关于android - AndEngine - 场景中所有 textureRegion 的一个 textureAtlas;可能的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16987907/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com