Flash: объединить два объекта BitmapData через MAX (канал)
-
24-09-2019 - |
Вопрос
У меня есть два объекта битмапдата с альфа-каналами. Я хотел бы объединить их в один, используя max (channel_image_one, channel_image_two) для каждого канала, включая альфа. Есть ли простой способ добиться этого результата?
Решение
Я не думаю, что есть прямой метод Bitmapdata, чтобы объединить альфа-шанель таким образом. RGB может быть сделано с помощью Draw (), применяя режим смеси, но я не думаю, что это будет работать, если вам нужен строгий Макс на Чанель).
Кроме того, вы можете создать шейдер благодаря Pixelbender. выполнить эту задачу. Это идеальный инструмент для такого рода манипуляций.
Медленнее в производительности, но быстрее настроить, если вы не использовались в PB, вы можете просто повторить / сравнить / пиксели один за другим с Bitmapdata.getPixel32 () / setpixel32 (). Если вы идете на это, подумайте об использовании Bitmapdata.lock () / unlock (), чтобы повысить производительность.
Другие советы
Если вы хотите MAX (Image_One, Image_TWO), которые должны быть эквивалентны Освещать режим смешивания.
Вот фрагмент от Фонд ActionScript 3.0 Эффекты изображения :
public function lighten(topPixel:uint, bottomPixel:uint):uint{
return Math.max(topPixel,bottomPixel);
}
Вы можете получить необходимые в качестве файлов из главы 2 папки Источник Zip..
Используйте совет Тео с
- замок()
- для петлей
- разблокировать ()
Для скорости с битмапдатами или используйте Pixelbender. Видимо по отношению к Амантик, более 90% пользователя Flash Player уже используют версию 10.