我注意到我可以为一个纹理区域保留一个图集,尽管我可以多次绘制相同的区域作为精灵。是否可以将所有纹理区域保留在场景中的一个纹理图集中?
我的特殊情况是,我正在生成图像而不是使用任何图像文件。我使用 BaseBitmapTextureAtlasSourceDecorator 执行此操作,并从 IBitmapTextureAtlasSource 生成区域。
是的。不过,一般来说,您应该只创建最大宽度/高度为 1024 的图集(顺便说一下,这些尺寸必须是 2 的幂),以提高效率。
另一方面,我发现使用 BuildableBitmapTextureAtlas 更容易。使用这种图集,您不必指定在图集中放置纹理的位置。我认为它也可能在某种程度上处理精灵流血(虽然不确定)。真的是一样的想法......这是我项目中的一个例子:
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)
总之,图集只包含您添加到其中的所有纹理。然后将此图集加载到内存中,以便可以快速检索这些纹理。然后,您可以使用纹理的单个实例来构建任意数量的独立精灵。