Советы по оптимизации производительности визуализации с помощью графического процессора

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

Примечание. На мобильных устройствах, поддерживающих аппаратную визуализацию, обращение к содержимому SWF часто происходит через Интернет. Поэтому при создании любого содержимого SWF рекомендуется учитывать эти советы, чтобы достичь наилучшей производительности на всех экранах.
  • Избегайте использования wmode=transparent или wmode=opaque в качестве внедренных параметров HTML. Производительность в данных режимах может снижаться. Кроме того, они могут приводить к небольшим потерям при синхронизации аудио и видео как при программной, так и при аппаратной визуализации. Также многие платформы не поддерживают визуализацию с помощью графического процессора, если включены данные режимы, что значительно снижает производительность.

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

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

  • Избегайте самопересекающихся кривых, очень тонких изогнутых областей (например, тонких полумесяцев) и сложных деталей по контурам формы. Такие формы являются слишком сложными для того, чтобы графический процессор мог выполнить их разбиение на сетку из треугольников. Чтобы понять причину этого, рассмотрим два вектора: квадрат 500 × 500 и полумесяц 100 × 10. Графический процессор может легко выполнить визуализацию большого квадрата, так как он разбивается всего на два треугольника. Однако для описания кривой полумесяца потребуется множество таких треугольников. Поэтому визуализация данной формы является более сложной, даже если она имеет меньший размер.

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

  • По мере возможности избегайте перерисовки. Перерисовка — это размещение нескольких графических элементов таким образом, чтобы они не перекрывали друг друга. При использовании программной визуализации отрисовка каждого пиксела происходит только один раз. Поэтому при программной визуализации снижения производительности приложения не происходит независимо от количества наложенных друг на друга графических элементов в данной области. При аппаратной визуализации пикселы перерисовываются для каждого элемента независимо от того, перекрывают ли другие элементы данную область. Если имеется наложение двух прямоугольников, при аппаратной визуализации перерисовка области наложения происходит дважды, тогда как при аппаратной визуализации область перерисовывается только один раз.

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

  • Избегайте использования в качестве фона больших заполненных прямоугольников. Вместо этого задайте цвет фона для объекта Stage.

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