2013-08-29 68 views
0

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

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(); 

我加载巴布亚新几内亚是一个全黑的960x640的图像(同我的场景大小),用于测试目的。但是,设置背景会导致我的fps从60(不使用背景时)降至45 HTC Desire。我尝试了多种设置背景的方式,但都似乎造成了相同的性能。为什么这会对性能产生如此激烈的影响,我能做些什么呢?

+0

也许一个愚蠢的问题,但你没有初始化每一帧的纹理,是吗? – Geobits

+0

不,我将它加载到onCreateResources函数中 – user1342037

回答

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