Статьи

Раскройте всю мощь аппаратно-ускоренного холста HTML5

Пришло время изучать HTML5 . Среди других преимуществ, это хороший способ получить максимальную отдачу от вашего оборудования.

Это сюрприз? Мы обычно думаем о веб-приложениях как о «адекватных» в своих лучших проявлениях и слишком часто раздражающих; Стандартный фольклор говорит, что нативные приложения доминируют в сравнении производительности. Конечно, требовательные геймеры или опытные бизнес-пользователи не хотят ждать в Интернете тех программ, которые они используют ежедневно.

В то время как нативные приложения в течение многих лет были в значительной степени превосходными, такие инновации, как Worlds Biggest PacMan, демонстрируют, что Интернет догоняет. Теперь HTML5 дает широкому кругу веб-разработчиков шанс сделать скачок в функциональности и производительности. и, в важных случаях, соответствует или превосходит таковые у нативных приложений. Вот что вам нужно знать об аппаратном ускорении элемента HTML5 canvas :

Более быстрый веб для СМИ и игр

HTML5 canvas с браузером с аппаратным ускорением может стать как минимум на порядок быстрее, чем родные приложения для настольных компьютеров. До HTML5 «графический» в HTML «графический пользовательский интерфейс» (GUI) эффективно ограничивался взаимодействием с формами: заполнением полей, нажатием кнопок, выбором и просмотром изображений. Новые достижения сделали такие драматичные и вдохновляющие сайты, как Tron и The Killers практичными. Чтобы узнать больше о том, чего может достичь canvas , смотрите также:

Почему эти сайты выглядят и работают больше как родные приложения? Все они используют canvas в качестве поддерживаемой нативной «области рисования» и создают в ней интерактивность пользователя. Все, что рисует любое веб-приложение, можно отобразить на canvas . Действия пользователя, включая нажатие кнопок, перетаскивание указателей и ввод с клавиатуры, могут приниматься и вычисляться в соответствии с изображениями и другими графическими объектами.

Как аппаратное ускорение делает это быстрее

У большинства читателей есть браузеры, которые продемонстрируют функциональность HTML5 canvas . Наличие браузера, который работает с операционной системой и соответствующим оборудованием, — вот что делает его работоспособным. Это включает в себя немного больше объяснений:

Предположим, настало время для существа PacMan сделать шаг вправо. Как это сделать? Браузер отображает « перевод» : он координирует пиксели, из которых состоит существо, смещается в новую позицию, существо перерисовывается, а старое существо стирается. Более сложные движения включают в себя еще более сложные алгоритмы сложения, вычитания, умножения и деления. При достаточном движении на экране и достаточной сложности вычислений рендеринг canvas начинает занимать все циклы, которые должен выполнять центральный процессор (ЦП).

Большинство современных настольных компьютеров имеют не только процессор, но и графический процессор (GPU). Графический процессор эффективно берет на себя из своего процессора практически все бремя вычислений, связанных с графическим рендерингом, и делает это с замечательной скоростью. Результат: когда браузер обнаруживает необходимость в более сложных вычислениях, он переключается с процессора на работу с процессором и графическим процессором. Пользователь видит разницу в скорости рендеринга, измеряемую такими методами, как стресс-тест аппаратного ускорения, который может легко перейти с 13 кадров в секунду до 180 (!) Кадров в секунду. Попробуйте сами на одном из этих сайтов с разными браузерами:

Положите ваш графический процессор на работу

Как вы и ваши конечные пользователи можете использовать преимущества аппаратного ускорения в Canvas? Вы должны убедиться, что ваше компьютерное оборудование и браузер настроены правильно. Плохая новость в том, что это нужно и вашим конечным пользователям. Хорошей новостью является то, что большинство современных устройств получат выгоду. Вот что вам нужно учитывать:

GPU или Integrated CPU / GPU — большинство современных настольных компьютеров могут похвастаться выделенными графическими процессорами, которые значительно улучшат работу с холстом на много порядков. Удивительным моментом может быть то, что ноутбуки и мобильные устройства также получат заметное преимущество благодаря новому набору интегрированных чипов . У большинства серверов и старых настольных ПК их нет, поэтому вам нужно быть готовым предоставить альтернативу или «изящно ухудшить» работу этих пользователей.

Последние версии драйверов устройств. Очень важно, чтобы у вас были установлены соответствующие драйверы устройств, чтобы максимально использовать возможности вашей конфигурации. Многие производители недавно обновили свои версии, чтобы графические процессоры могли корректно работать с браузерами с аппаратным ускорением. Ваши пользователи могут получать автоматические обновления, но вы можете прочитать о последних версиях драйверов для аппаратно-ускоренных браузеров здесь.

Поскольку широкий спектр устройств и драйверов, браузеры также предлагают способы переключения между аппаратным и программным рендерингом. Например, для Firefox 4 он отображается как «Правка / Настройки / Дополнительно /« Использовать аппаратное ускорение… ». Internet Explorer 9 автоматически определяет, поддерживает ли ваше устройство аппаратное ускорение, но вы можете изменить его вручную.

Браузер с аппаратным ускорением — он должен быть достаточно современным, чтобы обеспечить встроенную поддержку canvas . В наших тестах мы нашли хорошее 2-D аппаратное ускорение для всех последних современных браузеров, включая:

  • Chrome 13
  • Firefox 4
  • Internet Explorer 9
  • Опера 11
  • Safari 5

Тем не менее, некоторые браузеры имеют заметно более высокую производительность с canvas. Мы опробовали Internet Explorer 9 и Chrome 13 бок о бок с Firefly, используя четырехъядерный ноутбук с тактовой частотой 2,7 ГГц и выделенную графическую память 512 МБ. Результаты, измеренные в загрузке страницы и кадрах в секунду, сильно различались:

Производители браузеров уже работают над ускорением аппаратного ускорения, поэтому ожидайте, что эти результаты производительности быстро изменятся. Предварительный просмотр платформы Internet Explorer 10 заметно быстрее, чем Internet Explorer 9 в Firefly . Последняя сборка Chromium 14 для разработчиков также показывает, что Google делает аппаратное ускорение приоритетом в своих будущих выпусках.

Кодирование для холста

Влияют ли детали кодирования HTML и JavaScript на аппаратное ускорение? Имеет ли значение, какие виджеты canvas или операции появляются в вашем источнике? Есть ли у веб-разработчика особые способы максимально использовать возможности графического процессора?

Ответ: да и нет. Начните с эксперимента с тем, что можно поместить в тег canvas . Конкретные программные конструкции имеют ощутимую разницу, но они не так значительны, как браузер и аппаратные средства, с которыми сталкиваются ваши конечные пользователи. Вот ключевые концепции, которые необходимо учитывать при создании canvas:

Think Client, а не Server — загружайте необработанные данные с сервера, но генерируйте графику на клиенте. Это позволяет использовать комбинацию браузера и процессора / графического процессора устройства, которая, вероятно, будет более способна к аппаратному ускорению.

Один конкретный совет по кодированию из этого блога заслуживает широкого распространения: программно обновлять цвет определенного изображения или элемента, рисовать кадры из листов спрайтов в режиме назначения . Пример, который появляется там

 //Draw splatter mask ctx.globalCompositeOperation = “destination-in”: ctx.drawImage(sheet, x, y, width, height, 0, 0, width * scale, height * scale); 

Генерация графики на стороне клиента не только переносит вычислительную нагрузку на графический процессор, который предназначен именно для такой ответственности, но и уменьшает необходимость передачи изображений через слишком часто медленные сети.

Использовать несколько canvas — начните рисовать ваши объекты на невидимом холсте, пока идет загрузка страницы и анимация. После завершения и кэширования быстро нарисуйте всю сцену из кэшированного представления на второй видимый пользователю холст. Именно эта техника сделала пейнтбол рендерингом так быстро. Учитесь у него, просматривая источник или читая этот блог .

Измерение производительности в результатах для конечных пользователей. Хорошим началом является тестирование с помощью инструментов браузера, таких как F12 Developer Tools, для определения узких мест в сети и времени загрузки страниц, но лучшее «измерение» здесь — это активное участие людей: недостаточно просто запросить браузер для отчета Например, как быстро рендерит сцену. Интеллектуальный наблюдатель должен подтвердить, что обновления фактически дают желаемые эффекты анимации, а не просто перерисовывают неизменный вид, и что браузер остается должным образом реагирующим.

Холст для вашего сайта

С помощью canvas можно реализовать практически любой веб-сайт, чтобы чувствовать себя как веб-приложение. Веб-сайты оставили свое происхождение «все есть форма»; Современные программисты Canvas могут использовать динамичные, живые графические мотивы и эффекты, чтобы привлечь внимание конечных пользователей к растущему диапазону устройств. Когда вы делаете его частью своего сайта, обязательно:

  • Измерение производительности конечного пользователя на различных конфигурациях оборудования, драйверов устройств и браузеров. Будьте готовы изящно ухудшить работу пользователей с устаревшими устройствами или устаревшими браузерами.
  • Будьте осторожны с небольшими перерывами в функциональности canvas : соблюдаются ли определения шрифтов? Все ли режимы композиции правильно реализованы в браузерах, которые важны для вас?
  • Признайте, что аппаратное ускорение остается очень активной областью. Кажется, что каждый новый выпуск браузера включает в себя новые улучшения графического процессора, поэтому результаты часто меняются
Контент-партнер SitePoint

Это руководство стало возможным благодаря поддержке Microsoft. В сотрудничестве с Microsoft и независимо написанной SitePoint, мы стремимся работать вместе, чтобы разработать наиболее полезный и актуальный для вас контент.

Возможности, которые canvas приносит веб-приложениям, огромны. Экспериментируйте больше с этими ресурсами разработки: