我在使用精灵作为场景的背景时遇到了一些麻烦。我将背景设置如下:
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图像(与我的场景大小相同),用于测试目的。但是,设置背景会导致我的fps从60(在不使用背景时)下降到HTC Desire上的45。我尝试了多种设置背景的方法,但似乎所有这些都会导致相同的性能下降。为什么这会对性能产生如此大的影响,我能做些什么呢?
答案 0 :(得分:0)
奇怪的是,你应该获得如此大的性能。但这是尝试的一件事。由于我似乎除了这个背景之外你可能还有其他东西被绘制到屏幕上,所以将背景添加到相同的纹理。当纹理较少时,OpenGL的工作速度更快。当openGL必须从另一个纹理绘制时,它会切换上下文*(引用需要),这是一个缓慢的操作。因此,将所有精灵放在单个纹理上可以使GL绘制调用更有效。 仅此一点不太可能解释性能问题。
它也可能是你的抗锯齿设置:TextureOptions.BILINEAR。 双线性是最高质量的设置。尝试使用DEFAULT或NEAREST_PREMULTIPLYALPHA,看看是否有帮助。
另外,设置背景以忽略更新。
最后一个想法: 在这个日期(2010年发布),HTC的愿望是一款相当古老的手机,其性能部分归功于它是一款带有旧版Android的旧手机。我在HTC上测试了不可思议的,大约相同的年份,你必须对你的设备上的图像尺寸非常保守。 你是否知道你可以使你的andengine原始大小的屏幕尺寸的1/2,并使用RatioResolutionPolicy进行扩展?我将这种方法用于我的第一个andengine(GLES1)项目,并在这一代设备上取得了巨大的成功。https://play.google.com/store/apps/details?id=com.plonzogame&hl=en