28 февраля 2011 г.

Flash Player 11 бета с API Molehill во FlashDevelop

Радости просто нет предела! Долгожданный Flash Player 11 с поддержкой API Molehill вышел! Учтите, что это бета-версия и не все фичи могут попасть в релиз. А также, скорее всего, будут добавлены новые. Также плеер скорее всего содержит множество багов. Так что в продакшн это разработка не годится. Только для опытов :).

Пару слов об API Molehill, чтобы знать с чем мы будем иметь дело. А дело мы будем иметь с возможностью использовать ресурсы GPU (процессора видеокарты) прямо из флеш-плеера! Взаимодействие происходит посредством "кодирования в металле" :) (кто в теме поймет) или проще - низкоуровневых шейдеров. Конечно, впоследствии Adobe выпустит и высокоуровневые средства (а может уже есть?). Но пока и это прорыв.

Шейдеры же, это такой Ассемблер для GPU, если упрощенно.

Почему шейдеры лучше? Если раньше 3-мерность во Flash-плеере обеспечивалось силами CPU (центрального процессора), и количество визуализируемых полигонов было не велико (при относительно приемлемом уровне кадров в секунду - FPS), где-то порядка тысяч, от силы десятков тысяч, то сейчас этот показатель увеличится в тысячи или даже в десятки, сотни тысяч раз (будет зависеть уже от видео-карты)! Не говоря уже о других приемуществах, говорить о которых мы не будем, потому как говорить о них можно долго.

Данная публикация написана для тех, кто очень хочет поэкспериментировать с API Molehill, но познания в английском являются преградой. Пока русскоязычных публикаций мало. Здесь я расскажу как настроить среду разработки, чтобы использовать API Molehill на Windows-машине. К слову, на Mac и Linux тоже можно сделать подобное.

Итак, нам потребуется:

После того, как все это будет загружено, необходимо установить FlashDevelop и подключить его к Flex SDK 4.5. Как это сделать можно прочитать здесь.

Затем нам необходимо деинсталлировать установленные Flash-плееры посредством программы «Деинсталлятор Flash-плеера». Если этого не сделать, то у вас, скорее всего, не получится настроить должным образом систему для использования Molehill API.

После этого требуется установить Flash-плеер 11. И тут есть тонкость, о которой новички обычно не знают. Flash-плеер существует в 3 видах: ActiveX для Internet Explorer; plugin для остальных браузеров (не на движке IE) и автономная (standalong) версия. Flash-плеер 11-ой версии существует только в первых двух видах. Можно установить обе. Но если вы веб-разработчик, как я, то лучше установить только ту версию, браузером которой вы меньше всего пользуетесь, потому как Flash-плеер 11 бета обещает быть не стабильным. Я пользуюсь IE только для отладки верстки HTML, поэтому я установил версию ActiveX Flash-плеер 11. А плагин-версию (для Firefox и других браузеров) установил старую, добрую 10.2 debug. Так я имею лабораторию для опытов с API Molehill и "нормальную" отладочную систему для Flash Player 10.2.

Основные компоненты системы настроены. Теперь давайте подключим готовый тестовый проект. Для этого в FlashDevelop создайте ActionScript 3 проект. Затем, из выгруженного архива проекта необходимо скопировать папку com и файл TeaPot.as в папку src Вашего вновь-созданного проекта. Далее, во вкладке Project нашего IDE кликаем правой кнопкой мыши по файлу TeaPot.as и выбираем опцию «Always Compile».

Осталось поправить некоторые настройки проекта. В меню FD выбираем Project->Properties. Выбираем вкладку «Compiler Options». В ней необходимо добавить в свойство «Additional Compiler Options» 2 строки: -swf-version=13 и -target-player=11.0. После этого в папке путь_к_вашему_flex_sdk_4_5_19786/frameworks/libs/player создать папку с названием 11.0 и скопировать в него скачанный файл библиотеки flashplayer_inc_playerglobal_022711.swc, переименовав его в playerglobal.swc

Во и вся любовь, как говорится... Нажимаем F8 или выбираем в меню Project->Build Project, чтобы скомпилировать swf-файл. К слову сказать, если Вы выберете Test Movie, то результат Вас несколько обескуражит, но это только потому, что standalong-версии Flash Player 11 пока нет. Так что компилируйте проект, заходите в папку bin проекта и открывайте файл index.html посредством браузера в котором у Вас установлен Flash Player 11 (если Вы сделали как у меня, то это Internet Explorer). Только перед этим напишите в файле index.html в скрипте размещения мувика в переменной params следующий параметр: wmode: "direct", чтобы получить аппаратное ускорение. Чтобы проверить включено ли аппаратное ускорение, нужно лишь убедиться, что центральный процессор (CPU) не потребляет ресурсов для этой задачи.

Если Вы всё сделали правильно, то можете насладиться "классикой" 3-мерной графики - моделью чайника. Теперь дело за Вами. Пишите свои шейдеры, дерзайте. Скоро мы увидим удивительные вещи, такие как полноценные 3-мерные игры прямо в браузере!

16 комментариев:

Анонимный комментирует...

command line: Error: unknown configuration variable 'swf-version'
Use 'mxmlc -help' for information about using the command line.
Build halted with errors (fcsh).

Иван комментирует...

Значит Ваш IDE скорее всего подцеплен не к Flex SDK 4.5 19786 сборки. Посмотрите в окно Output FlashDevelop'а там в опции -compiler должен быть указан путь до указанного SDK и конфиг грузиться должен с него же.

Вася1 комментирует...

А что значит параметр:
-swf-version=13

Иван комментирует...

Вася1, зачем Вам это? Вам это не нужно.

Если очень хочется можете посмотреть сами в документации или набрав в командной строке:

mxmlc -help swf-version

Black комментирует...

D:\flex_sdk_4.5.0.19786\frameworks\flex-config.xml(56): Error: unable to open 'libs/player/10.1/playerglobal.swc'

Build halted with errors (fcsh).

Иван комментирует...

Есть несколько вариантов решения, но самый простой - создать папку D:\flex_sdk_4.5.0.19786\frameworks\libs\player\10.1\ (в Вашем случае) и скопировать в нее загруженный файл библиотеки playerglobal.swc.

Black комментирует...

проблему решил таким способом

http://gyazo.com/5d1f181b423437d1a54ca45b92348e08.png

Иван комментирует...

Или изменить конфигурацию, да...

Вася1 комментирует...

В документации не нашел такого параметра, вот и интересуюсь.

А за статью спасибо, все настроил, пришлось создать папку с именем 10.1, чтобы подсосалась playerglobal.swc

Иван комментирует...

Если для flex-компилятора набрать

> mxmlc -help swf-version

то он выдает следующее:

> -swf-version указывает версию скомпилированного файла SWF.

Эта версия используется в классе flash.display.SWFVersion

Анонимный комментирует...

У меня вроде запускается,но нечего не происходит
на выходе пишит

Ожидается подключение проигрывателя
Не удалось выполнить подключение; тайм-аут сеанса.
Проверьте, что:
\1. Приложение Flash компилировалось с включенной отладкой.
2. Запущена отладочная версия Flash Player.

Извеняюсь за вопрос но я недавно перешел на срипт.

Иван комментирует...

Очень похоже, что нужный Flash Player у вас всёже не установился. нажмите на месте где он должен быть правую кнопку мыши. Там последним пунктом должно быть что-то типа "О программе Adobe Flash Player 11...". Если это не так, то точно плеер не установился.

krol комментирует...

Нужен ли 9й explorer? в 8 у меня на флэшке черный фон и все. что характерно ноут переключает графику со встроенной на дискретную) увидеть бы еще результат

Иван комментирует...

> Нужен ли 9й explorer
Теоретически не нужен, т.к. интерфейс у ActiveX элемента плеера один и тот же, но достоверное не известно.

У меня в 8-м ИЕ работает. Смотрите где-то какие-то настройки. есть ли на флешке надпись в правом нижнем углу "Flash player...... 11......"? Выставили ли wmode в direct в html-файле?

krol комментирует...

Надпись в эксплорере видно, прямоугольник черный.
Я поставил plugin версию. В FireFox и Опере все заработало отлично, правда видео на дискретное не переключается, но все равно шустро. Интересно было бы попробовать 3-5 тысяч полигонов. В ГуглХром почему то остался преждий флэш плеер (10.3).

Иван комментирует...

activeX - для всех браузеров на движке Trident (т.е. ИнтернетЭксплорер)
plugin версия - для всех остальных (Firefox, Chrome, Opera, Safari etc)

Очень странно, что у вас в ФФ работает, а в Хроме нет. Смотрите настройки браузеров.

> Интересно было бы попробовать 3-5 тысяч полигонов
3000-5000 это очень мало для графических ускорителей, должно быть на порядок больше без проблем.

А что вы имеете в виду под "дискретная графика" и "встроенная графика"?

Отправить комментарий