2013-08-29 10 views
0

У меня возникли проблемы с использованием спрайта в качестве фона для моей сцены. Я устанавливаю фон следующим образом:Andengine background image performance

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 (если не использовать фон) до 45 на моем HTC Desire. Я пробовал несколько способов настройки фона, но все, похоже, вызывают одинаковый удар производительности. Почему это так сильно влияет на производительность, и есть ли что-то, что я могу сделать по этому поводу?

+0

Возможно, глупый вопрос, но вы не инициализируете текстуру во время каждого кадра, не так ли? – Geobits

+0

Нет, я загружаю его в функцию onCreateResources – user1342037

ответ

0

Странно, что вы должны получить такой большой удар производительности. Но вот одно дело попробовать. Поскольку, похоже, у вас, вероятно, есть другие вещи, привлеченные к экрану, кроме этого фона, добавьте фон в ту же текстуру. OpenGL работает быстрее, когда текстуры меньше. Когда openGL вынуждает рисовать из другой текстуры свой контекст переключателей * (ссылка), которая является медленной операцией. Поэтому, имея все ваши спрайты на одной текстуре, делает призывы рисования GL более эффективными. Это само по себе вряд ли объяснит проблему производительности.

Это также может быть ваша сглаживающая настройка: TextureOptions.BILINEAR. Bilinear - это установка самого высокого качества. Попробуйте использовать DEFAULT или NEAREST_PREMULTIPLYALPHA и посмотрите, не поможет ли это.

Кроме того, установите фон для игнорирования обновлений.

Последняя мысль: Желание HTC - довольно старый телефон в этой дате (выпущен в 2010 году), производительность будет отчасти из-за того, что это старый телефон со старой версией Android. Я тестирую на HTC невероятно, примерно тот же марочный, и вы должны быть очень консервативны с вашими размерами изображения на этом устройстве. Знаете ли вы, что вы можете сделать свой собственный размер и размер его собственного размера равным 1/2 размера и масштабировать его с помощью RatioResolutionPolicy? Я использовал этот подход для своего первого и нового проекта (GLES1) и имел большой успех в этом поколении устройств. https://play.google.com/store/apps/details?id=com.plonzogame&hl=en