Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   API приложений и сред (http://www.flasher.ru/forum/forumdisplay.php?f=61)
-   -   [Starling] Оптимизация вращения спрайта с детьми без запекания (http://www.flasher.ru/forum/showthread.php?t=210666)

ShockWave512 20.04.2015 13:42

может это из-за частоты синхронизации монитора, 60гц почти везде, а 45 кадров не попадает почти каждый 2-й кадр

mikhailk 20.04.2015 14:14

Проблема именно на девайсах. Не на компьютерах.

ShockWave512 20.04.2015 14:56

Вложений: 1
собрал апп
тормозов не заметил
на 45фпс есть на веб версии дерганье
на устройстве и 60 и 45 все отлично
айр сдк 17

устройство - http://www.notebookcheck-ru.com/Obzo....132016.0.html проц 4ядра MT8127 гпу Mali-450MP4 (по тестам раза в 4 медленней Sony Xperia Z2 Tablet)

проект - http://www.flasher.ru/forum/attachme...&d=1429532380k

Zebestov 20.04.2015 16:10

Рекомендуется заливать вложения на форум. Только так можно гарантировать доступность всех важных файлов.

mikhailk 20.04.2015 17:46

Изменил немного код Rotator, чтобы было более похоже на мой вариант. На Galaxy Tab FPS упал с 60 до 35, но при этом гладкость осталась приемлемой. Видимо, мои проблемы в чем-то другом.

Код AS3:

package 
{
        import starling.animation.Tween;
        import starling.core.Starling;
        import starling.display.Sprite;
        import starling.events.Event;
        import starling.utils.deg2rad;
        import starling.utils.HAlign;
        import starling.utils.VAlign;
 
        /**
        * ...
        * @author Roma Kraminskij - kraminskij@gmail.com
        */

        public class Rotator extends Sprite
        {
                private const REV:int = 24;
                private var _wheel : Sprite = new Sprite();
 
                public function Rotator()
                {
                        super();
 
                        this.alignPivot( HAlign.CENTER, VAlign.CENTER );
 
                        x = 300;
                        y = 300;
 
                        // wheel's back
                        for ( var i:int = 0; i < 5; i++ )
                        {
                                p = new Part();
                                p.x = -100 + 20 * i;
                                p.y = -100 + 20 * i;
                                _wheel.addChild(p);
                        }
 
                        // wheel's sectors
                        for ( i = 0; i < REV; i++ )
                        {
                                var p:Part = new Part();
                                p.rotation = Math.PI * 2 / REV * i;
                                _wheel.addChild(p);
                        }
 
                        addChild( _wheel );
 
                        // objects over wheel
                        for ( i = 0; i < 5; i++ )
                        {
                                p = new Part();
                                p.x = 200;
                                p.y = -300 + 100 * i;
                                addChild(p);
                        }
 
                        this.addEventListener(Event.ADDED_TO_STAGE, addHandler );
                }
 
                private function addHandler(e:Event):void
                {
                        removeEventListener(Event.ADDED_TO_STAGE, addHandler);
 
                        var t:Tween = new Tween(_wheel, 1000 );
                        t.animate("rotation", deg2rad(360*REV));
 
                        Starling.juggler.add(t);
                }
 
        }
 
}


ShockWave512 20.04.2015 18:00

- сколько DrawCalls? если что понижать ниже 5, битмап шрифт, единственный атлас на всё, никаких фильтров

- подключить Scout, в теории он сразу покажет на узкое место на девайсе

mikhailk 20.04.2015 18:26

Цитата:

сколько DrawCalls? если что понижать ниже 5, битмап шрифт, единственный атлас на всё, никаких фильтров
DrawCalls 55.
Относительно остального - это же не баннер с одним колесом. Там довольно много всего наверчено. Все элементы вью (колесо, фон и объекты над колесом) - это в одном атласе. Есть еще видимые элементы интерфейса панели пользователя - они во втором. Есть еще самый разный зоопарк, который был на экране до колеса - он убран с экрана.

Кстати, если уменьшить скорость вращения до чисто символической (оборот за 2.5 секунды), то все довольно гладко выглядит. Хотя скорость и маловата.


Цитата:

подключить Scout, в теории он сразу покажет на узкое место на девайсе
Подключить скаут - с этим проблем нет.
Но по моему опыту его использования он не показывает, что происходит именно на девайсе.
Или это какой-то особый скаут?

ShockWave512 20.04.2015 18:45

может и особенный ;)

позже гляну как он с девайса по Stage3d инфу закидывает

mikhailk 21.04.2015 14:41

В общем, основная причина тормозов была в том, что за слоем с колесом (там бэк на весь экран и по центру колесо) оставался предыдущий интерфейс основной игры. Он, как выяснилось, тоже участвовал в рендеринге. Пришлось выставить ему visible=false.

И второе, что помогло - запекание в рендерТекстуру. Примерно 5 попугаев дает по сравнению с флаттеном.


Часовой пояс GMT +4, время: 00:04.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.