0

我在使用精灵作为场景的背景时遇到了一些麻烦。我将背景设置如下:

Sprite bg = new Sprite(SCENE_WIDTH/2 , SCENE_HEIGHT/2, this.mParallaxBackRegion,getVertexBufferObjectManager());
bg.setCullingEnabled(true);
mScene.setBackground(new SpriteBackground(bg));

加载纹理:

this.mParallaxBack = new AssetBitmapTexture(this.getTextureManager(), this.getAssets(), "gfx/_fixed.png", TextureOptions.BILINEAR);
this.mParallaxBackRegion = TextureRegionFactory.extractFromTexture(this.mParallaxBack);
this.mParallaxBack.load();

我正在加载的 png 是一个完全黑色的 960x640 图像(与我的场景大小相同),用于测试目的。但是,设置背景会导致我的 HTC Desire 上的 fps 从 60(不使用背景时)下降到 45。我尝试了多种设置背景的方法,但似乎都造成了相同的性能损失。为什么这会对性能产生如此巨大的影响,我能做些什么吗?

4

1 回答 1

0

奇怪的是你会受到如此大的性能影响。但这里有一件事要尝试。因为我似乎除了这个背景之外你可能还有其他东西被绘制到屏幕上,所以将背景添加到相同的纹理中。当纹理较少时,OpenGL 工作得更快。当 openGL 必须从另一个纹理中绘制时,它会切换上下文 *(需要引用),这是一个缓慢的操作。因此,将所有精灵放在一个纹理上会使 GL 绘制调用更加高效。仅此一项不可能解释性能问题。

它也可能是您的抗锯齿设置:TextureOptions.BILINEAR。双线性是最高质量的设置。尝试使用 DEFAULT 或 NEAREST_PREMULTIPLYALPHA 看看是否没有帮助。

此外,将您的背景设置为忽略更新。

最后一个想法:HTC 的愿望是目前(2010 年发布)的一款相当老的手机,其性能部分原因在于它是一款带有旧版本 android 的旧手机。我在一台 HTC 上进行了令人难以置信的测试,几乎相同的年份,你必须对你在该设备上的图像尺寸非常保守。你知道你可以让你的 andengine 原生尺寸为屏幕尺寸的 1/2 并使用 RatioResolutionPolicy 将其放大吗?我在我的第一个 andengine (GLES1) 项目中使用了这种方法,并且在那一代设备上取得了巨大的成功。https://play.google.com/store/apps/details?id=com.plonzogame&hl=en

于 2013-08-30T20:48:16.647 回答