【问题标题】:AndEngine -- Multiple Textures Overlapping On One TextureAtlasAndEngine -- 在一个 TextureAtlas 上重叠的多个纹理
【发布时间】:2011-12-15 00:13:39
【问题描述】:

我使用 AndEngine 已经有一段时间了,并且已经设法让大多数事情正常工作,但是我在处理最新的错误时遇到了一些困难。长话短说,我想在一个 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 来弄清楚我需要做些什么来让这个工作变得有点不知所措,所以我希望比我更有经验的人能给我一两个关于去哪里的提示管理这个。

当然,对于我的问题,我也愿意接受其他建议,这是我想出的解决方案,但我相信还有其他方法!

【问题讨论】:

    标签: bitmap opengl-es textures andengine texture-atlas


    【解决方案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 步:盈利!)

    【讨论】:

    • 我从没想过要尝试使用 AndEngine 之外的命令来实现这一点,但我知道它是如何工作的。我正在处理一个神秘的 NullPointerException 试图让这一切发生,但我想知道在以这种方式合并这些位图之前,我对这些位图有多少控制权?当我按照我之前打算的方式做事时,我或多或少知道如何进行所有处理工作,但是对于这些位图,是否需要通过某种形式的逐像素计算来完成?
    • 点击上面的链接“android:如何将一组位图合并到一个位图中?”查看所需的代码。它并不难。最棘手的一点是了解如何正确使用 Canvas 对象。
    • 我一直在努力,为了满足我的要求,我必须做些不同的事情,但似乎我现在正走在正确的道路上!谢谢。
    猜你喜欢
    • 2018-05-30
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 2016-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多