AndEngine FPS随每个Sprite掉落

时间:2011-11-22 18:01:27

标签: sprite andengine frame-rate

我正在与AndEngine合作开发一个应用程序项目,我的帧率已经遇到了重大障碍。我有一些尺寸相当大的精灵放在屏幕上,每个精灵都是512x768,似乎我添加的每一个都带走了我FPS中非常明显的一块。

即使使用的图像只是空白的PNG,也会有相同的损失。我已经四处搜索并尝试了所有有意义的东西,但似乎没有任何改进,而且AndEngine缺乏文档并不能简化任何问题。

我唯一真正猜到的原因是精灵必须完全重建每一个电话。我可能完全错了,但这是我能想到的唯一合乎逻辑的理由。尽管如此,我不知道如何阻止这种情况发生(仍然认为这当然是问题所在)。

我用来创建所有内容的代码与我见过的每个例子都是一样的,所以我怀疑这是问题所在,但以防我的精灵设置或多或少如下:

        public void onLoadResources(){
            this.mTexAtlas = new BitmapTextureAtlas(1024, 1024, TextureOptions.BILINEAR_PREMULTIPLYALPHA);
            this.mTexBottom = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.mTexAtlas, this, "bottom.png", 0, 0);
            this.getEngine().getTextureManager().loadTexture(this.mTexAtlas);
        }

        public Scene onLoadScene(){
            mTexBottom = new Sprite(spriteX, spriteY, spriteWidth, spriteHeight, mTexAtlas);
            scene.attachChild(mTexBottom, childCount++);
        }

出于清晰的原因,这不是我的确切代码,但这就是我所看到的所有示例的外观,所以这几乎就是我看起来的样子。哦,纹理图集是1024宽,因为我每个都放两张图片,至少目前是这样。

此时我愿意尝试任何方法让它变得更好,所以任何想法都会很棒。

2 个答案:

答案 0 :(得分:0)

我认为你在错误的地方使用了错误的变量,你能这样试试吗?

    public void onLoadResources(){
        this.mTexAtlas = new BitmapTextureAtlas(1024, 1024, TextureOptions.BILINEAR_PREMULTIPLYALPHA);
        this.mTexBottom = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.mTexAtlas, this, "bottom.png", 0, 0);
        this.getEngine().getTextureManager().loadTexture(this.mTexAtlas);
    }

    public Scene onLoadScene(){
        Sprite theSprite = new Sprite(spriteX, spriteY, spriteWidth, spriteHeight, mTexBottom );
        scene.attachChild(theSprite, childCount++);
    }

答案 1 :(得分:0)

你的相机有多大?我的意思是你的精灵与屏幕相比有多大?

您应该尽量避免多次绘制屏幕。绘制一些覆盖整个屏幕的Sprite可能是你能做的最糟糕的事情。