Russian Qt Forum
Июнь 01, 2024, 04:12 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Запутался с альфа-каналом :)  (Прочитано 1463 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« : Октябрь 22, 2011, 16:59 »

Добрый день

Возникла совсем простенькая задачка которую однако решить не смог  Улыбающийся Сначала хочу объяснить "исходную" - то что не вызывает никаких вопросов.

Есть исходный ARGB имедж (src). К нему применяются цепочки преобразований, назовем их "фильтры" (flt). Каждый фильтр - это еще один имедж + правило по которому он комбинируется с исходным имеджем. Результат фильтра подается как src для следующего фильтра. Для примера возьмем 2 простейших фильтра

1) Replace (src = flt). RGB исходного имеджа заменяются новыми
2) Multiply  (src *= flt). RGB исходного имеджа умножаются на фильтр, результат подсекается до 1.0

Теперь причем здесь альфа. Для исходного имеджа она никак не учитывается - считаем что она всегда = 1. А вот альфа фильтра определяет "интенсивность" его применения. Примеры

- if (flt.a <= 0.0f)  // фильтр не применяется вообще, пиксель остается неизменным
  continue

- if (flt.a >= 1.0f)  // фильтр применяется полностью
  src = DoFilter(src, flt);

- if (flt.a > 0.0f && flt.a < 1.0)  // фильтрованное значение смешивается с исходным по альфе фильтра
  src = DoFilter(src. flt) * flt.a + src * (1.0f - flt.a);

Еще пример: исходный имедж был 100% синим, применяется красный фильтр с альфа 50%. Результат (0.5, 0.0, 0.5) - фиолетовый 50%. Альфа исходного имеджа (src) никак не учитывается и никак не накапливается.

Конечно Вы можете сказать "да зачем сотый раз объяснять как работает альфа маска - это и дураку понятно" - и это правда  Улыбающийся Просто по опыту знаю - если сразу изложу задачу, то непонятки неизбежны (мол, а ты не объяснил и все такое). Поэтому если есть квешнзы - задавайте сейчас, сначала все выясним, а потом перейдем к тому "а что же надо сделать".

Спасибо
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.072 секунд. Запросов: 19.