2013-08-29 73 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