Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Общие вопросы о Flash (не затрагивающие ActionScript) (http://www.flasher.ru/forum/forumdisplay.php?f=60)
-   -   Тормоза при wmode=direct (http://www.flasher.ru/forum/showthread.php?t=210575)

pas.delger 01.04.2015 14:16

Тормоза при wmode=direct
 
Добрый день!

Делаю барабаны для слот-автомата. Двигаю сверху вниз длинную картинку. Рассчитываю на 50fps. Когда встраиваю флеш с параметром wmode=direct - fps иногда слетает до 30, иногда нет. Что самое интересное, с параметром wmode=window (он же по умолчанию), тормозов нет - все очень шустренько.

Везде в том числе на официальном хелпе от Adobe написано, что direct - самый, так сказать, верняк вариант для производительности. Как объяснить тормоза в мое ситуации?

Я бы плюнул и поставил window, да вот как быть с тем, что если включить fullscreen - wmode автоматом становится direct и начинаются тормоза?

Помогите, пожалуйста, разобраться, где я накосячил?

Zebestov 01.04.2015 17:10

Цитата:

Сообщение от pas.delger (Сообщение 1180861)
Везде в том числе на официальном хелпе от Adobe написано, что direct - самый, так сказать, верняк вариант для производительности.

Direct необходим только для приложений на Stage3D.

pas.delger 01.04.2015 17:34

Спасибо! Я не против поставить window. Но, все же, что тогда делать с fullscreen-ом?

Zebestov 01.04.2015 17:50

А можно узнать, что конкретно стоит за словами "включить fullscreen" и "wmode автоматом становится direct"?

pas.delger 01.04.2015 18:04

Тут сказано

Цитата:

Flash Player displays content viewed in full screen mode using direct path rendering
И так оно действительно выглядит. При wmode=direct производительность в обычном режиме и в режиме fullscreen'a одинаковая (плохая). Если поставить wmode=window - тогда в обычном режиме все летает, а на fullscreen'е - тормоза.

Добавлено через 1 минуту
Простите, забыл добавить:
Включить fullscreen - stage.displayState = StageDisplayState.FULL_SCREEN

Zebestov 01.04.2015 18:19

Очевидно, нужно оптимизировать отображение, размытия какие-то, стараться не делать "длинных изображений" и т.д.
Других вариантов нет.

P.S.
Зачем барабанам больше 30 fps?

pas.delger 01.04.2015 18:57

30 маловато, не доставляет...

Спасибо за ответы, буду думать!

Добавлено через 9 минут
А вообще, просто из интереса решил эту тему поднять. Direct дает возможность использовать аппаратное ускорение, и в хепле от адоба ничего не сказано о том, что его рекомендуется использовать ТОЛЬКО для Stage3D. Напротив, они пишут что этот режим, просто, дает максимальную производительность. Понятно, наверняка в моем случае есть что оптимизировать-пересматривать. Но факт есть факт: в direct - тормоза, в window - все путем. Получается, Adobe врут?

Zebestov 01.04.2015 19:29

Не, там вроде сказано, что он дает возможность использовать аппаратное воспроизведение видео и Stage3D. Сам по себе wmode direct больше ничего особого в себе не несет. Он скорее всего устроен как gpu + Stage3D + StageVideo. И вот тут стоит понимать разницу между режимами gpu и группой режимов cpu (window, opaque, transparent).

Рекомендуется использовать wmode gpu, если в приложении преобладает растровая графика.

Если же больше графики векторной, то следует ставить режимы window, opaque (если требуется пошаманить с z-index на страничке) или transparent (только если таки никак не получается избежать использования прозрачной флешки).

Говоря другими словами, если у тебя флешка в основном векторная, то wmode gpu (direct) снижает производительность. Если же у тебя и так растр — шерше ля ботлнек :)

pas.delger 01.04.2015 19:40

Да-да, у меня растр. Действительно, сократив свою длиннющую картинку в 5 раз - стабильнее стало держать 50fps при direct'e. Придется, видимо, что-то мутить с дабл буферами или еще чем. А так надеялся, что просто надо где-то галочку поставить... (:

pas.delger 17.04.2015 11:51

С позволения, я все же воскрешу тему. Новые обстоятельства...

Максимально оптимизировав свои барабаны тормоза все равно остались. При чем очень заметна разница между официальным адобовским плеером и хромовским PepperFlash. То есть, в Firefox, в официальном плеере, в режиме Direct - работает стабильно и плавно. В хроме, во встроенном PepperFlash - в 2 раза медленнее. Если поставить wmode=window - в обоих случаях тормозов не заметно.

Что я заметил изучая аналоги... Вот есть такая игруха:
https://games.hollandpowergaming.com...=supergame_prd

В которую босс меня тыкнул носом сказав: "хочу что бы летало быстро как у них". И таки изучив код страницы я заметил, что они определяют wmode в зависимости от броузера. Отрывок из кода:

Код:

function getWmode()
                        {
                                var wmode = gup("wmode");
                                if (!wmode)
                                {
                                        wmode = "direct";
                                        if (navigator.appName == 'Microsoft Internet Explorer') wmode = "window";
                                        else if (window.chrome) wmode = "window";
                                }
                                return wmode;
                        }

То есть, если IE или Chrome - то window. Если остальное - то direct.

По моим наблюдениям - все сходится. Я бы не проч добавить такое же условие для нашего сайта. Но объясняя свою идею, хочется это чем-то аргументировать и не выглядеть глупо. (:


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

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