пиксель — C ++: сглаживание точек перекрытия (альфа-смешение)

Я не мог найти точного ответа на этот вопрос после осмотра здесь и поиска в Google. У меня есть небольшой фрагмент кода, который наносит точки на массив с плавающей точкой, представляющий изображение. Я столкнулся с сглаживанием Сяолин Ву из другого поста в другом месте (http://freespace.virgin.net/hugo.elias/graphics/x_wupixl.htm). Все это имеет смысл, и у меня это работает, однако это не объясняет, как обрабатывать случаи, когда две частицы (или пиксели Ву) перекрываются или совместно используют одни и те же пиксели …

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

У меня вопрос, как обычно обрабатываются такие дела? Поскольку это сглаживание, ни одна частица не имеет 100% -ного вклада в пиксель (ну … очень редко), поэтому нельзя просто поменять старое значение пикселя на новое.

Любые советы будут высоко оценены! Надеюсь, что это ясный и правильный вопрос …

1

Решение

Ах, нашел немного информации о базовом альфа-смешивании Кажется, чтобы сделать трюк!

новый = (цвет * альфа) + (старый * (1,0 — альфа));

Пока достаточно.

0

Другие решения