我正在与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宽,因为我每个都放两张图片,至少目前是这样。
此时我愿意尝试任何方法让它变得更好,所以任何想法都会很棒。
答案 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可能是你能做的最糟糕的事情。