AndEngine - 在一个TextureAtlas重叠的多个纹理

时间:2011-12-15 00:13:39

标签: opengl-es bitmap textures andengine atlas

我已经和AndEngine一起工作了一段时间,并且设法让大部分工作变得有效,但我对我最新的bug有些困难。长话短说,我已经到了一个点,我想在一个BitmapTextureAtlas上将一些图像组合在一起。

这些图像不能全部组合开始,因为某些图像不会一直显示,并且每个图像也会根据用户输入进行各自的后期处理。然而,在完成所有这些输入之后,它会使事情变得更容易,并且稍微提高性能,将这些图像组合到一个纹理上并且只有一个精灵来显示所有这些(半打左右)。

我一直试图通过做类似以下的事情来做到这一点:

    this.mBitmapTextureAtlas = new BitmapTextureAtlas(512, 1024, TextureOptions.NEAREST_PREMULTIPLYALPHA);

    this.mFaceTextureRegion = BitmapTextureAtlasTextureRegionFactory.createFromAsset(mBitmapTextureAtlas, this, "layer1.png",0 ,0);
    this.mFaceTextureRegion2 = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.mBitmapTextureAtlas, this, "layer2.png",0 ,0);

这几乎可行,问题是(至少从我看到它的方式)它覆盖每个像素,因此只会添加最后一层。试图通过AndEngine潜入我的方式来弄清楚我需要做些什么来让这个工作有点压倒性作为一个业余开发人员,所以我希望有一个比我更有经验的人可以给我一个关于哪里去的提示管理这个。

当然我也对我的问题提出了其他建议,这是我提出的解决方案,但我确信还有其他方法!

1 个答案:

答案 0 :(得分:1)

您将无法通过反复写入纹理来做到这一点(正如您已经了解到的那样)。 解决方案将需要一些工作,但它完全有可能。

首先,您可以使用Android OS将一组图像合成在一起。已经有Stack Overflow问题可以解决这个问题,用户可以在其中提供合并位图数组的代码。

android: how to merge an array of bitmap together in one bitmap?

然后,您需要在Andengine中创建TextureSource,以便从位图而不是资源或资产创建区域。

AndEngine Texture from Drawable

最后,您可以将TextureRegion传递给您的Sprite。

(第3步:利润!)