Page 1 of 1

Смешивание картинок с учетом прозрачности

Posted: Wed Jan 18, 2012 10:29 am
by SoUrcerer
Сделал coff-библиотеку на скорую руку, для своих будущих целей. Эксперименты с ядром показали, что все выводить с альфа-каналом - есть плохая идея.

Итак, в библиотеке (которую нужно положить в /sys/lib/) две функции.
Miximage получает две картинки (pic1 и pic2) в формате 24bpp, их разрешение (а они должны быть одинакового разрешения) и прозрачность (float от 0 до 1). Результат: pic1 - смешанное изображение.
Alphaimage получает на вход картинки pic1 в 24bpp и pic2 в 32bpp, и их разрешение. Результат: pic1 - смешанное изображение.

В архиве приложены две программы. a32 тестирует первую функцию, beta - вторую. Смотреть в них особенно не на что. Программы простые, написаны на Си, но я перепишу их на ассемблере, если никто не сделает этого раньше.

Re: Смешивание картинок с учетом прозрачности

Posted: Wed Jan 18, 2012 11:19 am
by Mario
Это... "А тебя ведь предупреждали". :lol:

Re: Смешивание картинок с учетом прозрачности

Posted: Wed Jan 18, 2012 12:08 pm
by SoUrcerer
Ну, попытка - не пытка. И вообще, может быть когда-нибудь 32bpp все же появится в ядре/видеодрайверах ;)

Re: Смешивание картинок с учетом прозрачности

Posted: Wed Jan 18, 2012 12:55 pm
by Стас
В моей оси иконки прозрачные при перетаскивании, так же как и в винде. Кстати они у меня 128*128, при чём разрешение пока что 640*480. Смотрятся здоровыми(но симпатышными)
По прозрачности у меня эфектов дофига.

Re: Смешивание картинок с учетом прозрачности

Posted: Wed Jan 18, 2012 1:43 pm
by Mario
Почем свою ОС продавать будешь?

Re: Смешивание картинок с учетом прозрачности

Posted: Wed Jan 18, 2012 1:48 pm
by Стас
Зачем, это просто вечернее хоби

Re: Смешивание картинок с учетом прозрачности

Posted: Wed Jan 18, 2012 2:15 pm
by Mario
Ну, поскольку я татарин ("татарин пока руками не потрогает не поверит" народная поговорка) то пока не увижу работающий код, то вынужден воспринимать такие заявления с огромной долей скепсиса. Не пойми превратно, но пока твои заявления выглядят в стиле старого анекдота - "доктор как же так? а вот мой друг, который на 20 лет старше меня говорит, что он с женой каждую ночь! - так и вы говорите!".

Re: Смешивание картинок с учетом прозрачности

Posted: Wed Jan 18, 2012 2:36 pm
by Стас
Ну у меня пока тока рабочий стол с картинкой загружается с панелью и иконками, и два окошка открываются. На одном список контроллеров. И усё пока. Возможности сделать чтото интересное впринципи есть.

Re: Смешивание картинок с учетом прозрачности

Posted: Wed Jan 18, 2012 2:54 pm
by SoUrcerer
Mario, когда-то давно у меня была своя ОС с поддержкой масштабируемых растровых шрифтов и многозадачностью, и 32bpp, и прозрачностью на QBasic'е. :D На 80486 выдавало примерно 5-10 fps.

Re: Смешивание картинок с учетом прозрачности

Posted: Wed Jan 18, 2012 3:42 pm
by Mario
КЭП уверенно утверждает, что ОС это не GUI, а нечто большее - по крайней мере в современных понятиях. GUI Это всего лишь побочное направление. Хотя с точки зрения пользователя конечно в первую очередь GUI только и присутствует. Но мы же в конечном счете разработчики, а не только пользователи.

Re: Смешивание картинок с учетом прозрачности

Posted: Wed Jan 18, 2012 3:59 pm
by SoUrcerer
ОК, это была операционная оболочка. Энд оффтоп :)

Re: Смешивание картинок с учетом прозрачности

Posted: Wed Jan 18, 2012 9:35 pm
by IgorA
У меня в библиотеке buf2d есть возможность рисования прозрачных изображений. Я выкладывал на форуме пример с использованием прозрачности. В твои примеры я пока не вникал, но думаю что основная мысль та же что и у меня. Хотя если тебе нужен вывод сразу на экран без использования буфера, то мои примеры не подойдут.

Re: Смешивание картинок с учетом прозрачности

Posted: Wed Jan 18, 2012 9:56 pm
by SoUrcerer
Ок, я сделал велосипед, похоже :D Интересно сравнить производительность, кстати.

Re: Смешивание картинок с учетом прозрачности

Posted: Thu Jan 19, 2012 11:08 pm
by IgorA
SoUrcerer wrote:Интересно сравнить производительность, кстати.
Забыл сказать что более новые примеры (по сравнению с форумом) есть на svn в папке
(root)/programs/develop/libraries/buf2d/trunk/examples/
так что на форуме можно не искать.