Kostia | Дата: Понедельник, 10.03.2008, 13:28 | Сообщение # 1 |
Киллер
Группа: Проверенные
Сообщений: 39
Статус: Offline
| В играх часто используется альфа смешивание цветов, но в GDI или в DirectDraw нет специальных функций которые бы позволили задать цвету альфу для каждого пикселя и программистам приходится делать все это вручную! Как я уже сказал, альфа используется в игра, а именно если нужно чтобы что-то появлялось из вне или сделать туман.… На счет DirectDraw я наврал, там можно сделать картинку полупрозрачной и ее вывод будет происходить на аппаратном уровне это намного быстрее но вы лишаетесь многих вкусностей, допустим вам нужно задать альфу не все картинке а плавное перетекание или сделать так чтобы картинка появлялась по спектрам цвета, сначала красный, далее зеленый и синий сделав как бы мозаику, но вам придется ради этого пожертвовать скоростью. В этой теме я приведу пример на канве, фон, на котором будет летать картинка то, исчезая, то, появляясь, думаю, цель ясна! Я любитель оптимизации и чтобы сцена долго не рисовалась мы все цвета фона и рисунка занесем в двухмерный массив! Рисовать будем в памяти, нарисуем фон и в нужных координатах поставим смешанный цвет!
|
|
| |
Ivin | Дата: Суббота, 15.03.2008, 19:22 | Сообщение # 2 |
Admin
Группа: Администраторы
Сообщений: 178
Статус: Offline
| Kostia, можно еще ускорить этот код. Причо всего одной строчкой. buf.PixelFormat:=pf24bit; При 70 FPS после добавлении этой строки выдает 90 FPS.
|
|
| |