Чернобелый фильтр

  Вход на форум   логин       пароль   Забыли пароль? Регистрация
On-line:  

Раздел: 
Game Maker Форум / Вопросы и Ответы (Для Опытных) / Чернобелый фильтр

Страницы: 1 2 Next>> новая тема

Автор Сообщение

магистр
Группа: Сообщество GM
Сообщений: 314
Добавлено: 06-11-2006 13:40
Например в игре персонаж вспоминает прошлое (флэшбэк)
или переходит в астральную проекцию.
Вопрос: Как сделать чтоб экран в это время становился черно белым, ума не приложу.
И вобще возможно такое или нет?

магистр
Группа: Сообщество GM
Сообщений: 320
Добавлено: 06-11-2006 14:54
ну вроде простого метода нет.
Можно брать все пиксели с экрана и превращать их в ч/б, только это тормозно будет.

Цикл для всего экрана:
{
draw_getpixel(x,y)
draw_set_color(color_get_value(col)))
draw_point(x,y)
}

магистр
Группа: Сообщество GM
Сообщений: 316
Добавлено: 06-11-2006 15:14
можно всю графику делать ч.б. и задавать в объекте цвет спрайта или фона... или ещё вариант делать всю графику которая будет в ч.б. и в цветном вариантах, и переключаться по переменой...

popww
Группа: Администраторы
Сообщений: 736
Добавлено: 06-11-2006 15:15
DreamRunner объясни как это будет работать а то в функциях рисования я слаб

магистр
Группа: Сообщество GM
Сообщений: 320
Добавлено: 06-11-2006 15:50
первая функция берёт с экрана цвет точки
вторая берёт состовляющую яркости у цвета
далее назначаем этот цвет для рисования
третья рисует этим цветом точку.

Переходим к следующей точке:)) и так весь экран

Володька
Группа: Сообщество GM
Сообщений: 1648
Добавлено: 06-11-2006 17:27
{
draw_getpixel(x,y)
draw_set_color(color_get_value(col)))
draw_point(x,y)
}


до меня не доходит: откуда переменная col?

popww
Группа: Администраторы
Сообщений: 736
Добавлено: 06-11-2006 18:00
col=draw_getpixel(x,y)
может типа так

Володька
Группа: Сообщество GM
Сообщений: 1648
Добавлено: 06-11-2006 23:08
скорее всего...

магистр
Группа: Сообщество GM
Сообщений: 314
Добавлено: 07-11-2006 09:29
Кодом тормазновато, наверное прийдется отдельно графу чб всовывать.
СПС всем

гроссмейстер
Группа: Сообщество GM
Сообщений: 147
Добавлено: 07-11-2006 09:33
Я бы сделал следующим образом. Надо использовать два варианта графики - ч.б. и цветную (как сказал snack_aae), но...
если тебя волнует занимаемое исходником игры место, то используем идею, которую подал DreamRunner, только не совсем так. Изначально графика в исходнике игры цветная. При загрузке игры, вся графика переделывается в ч.б. и временно хранится на диске. Тогда ничего не будет тормозить и исходник игры потяжелеет на один скрипт.

маэстро
Группа: Сообщество GM
Сообщений: 812
Добавлено: 09-11-2006 04:58
Я тут подумал, и решил, что это может сработать, а может и нет.
Вообщем снимаем с экрана снимок, делаем 3 спрайта. Блэндим их в 3 цвета - синий, красный и зелёный. В результате при наложении это должно дать серый цвет. Полагаю ,что прозрачность каждого должна быть равна 0.33. Возможно сработает. Так же моэно поъксперементировать с режимом смешивания.

магистр
Группа: Сообщество GM
Сообщений: 314
Добавлено: 09-11-2006 14:46
Чет не понял можно примерчик

гроссмейстер
Группа: Сообщество GM
Сообщений: 147
Добавлено: 09-11-2006 17:21
Чет не понял можно примерчик

Идея CRYSTALL m оригинальна. Но шибко тормозно будет и результат мало предсказуем. А почему тебе не нравится моё предложение.

магистр
Группа: Сообщество GM
Сообщений: 320
Добавлено: 09-11-2006 18:33
кажись я придумал!!!

нужен снимок экрана и белый спрайт размером с вид.
Принимаем скриншот как альфаканал для белого спрайта и рисуем полученное на чёрном фоне.

Итого за степ:
1. получить снимок вида
2. использовать его как альфу для белого спрайта
3. нарисовать полученный спрайт

Спрайт не обязательно спрайт, может сурфэйс.
не тормознее излюбленного некоторыми динамического освещения

Володька
Группа: Сообщество GM
Сообщений: 1648
Добавлено: 09-11-2006 21:48
Объясните мне пожалуйста что такое альфа-канал

магистр
Группа: Сообщество GM
Сообщений: 443
Добавлено: 10-11-2006 00:04
DreamRunner, проверял, работает?

магистр
Группа: Сообщество GM
Сообщений: 320
Добавлено: 10-11-2006 05:45
вот такое я нацарапал (суёте в DRAW объекта у которого depth=-99999, короче ближе всех):
spr=sprite_create_from_screen(view_xview,view_yview,view_wview,view_hview,0,0,0,0,0,0)

sprite_assign(s_empty,s_bw)

sprite_set_alpha_from_sprite(s_empty,spr)
draw_sprite_ext(s_bw,0,view_xview,view_yview,1,1,view_angle,c_black,1)
draw_sprite_ext(s_empty,0,view_xview,view_yview,1,1,view_angle,c_white,1)

sprite_delete(spr)


s_bw - белый большой спрайт
s_empty - временный спрайт

магистр
Группа: Сообщество GM
Сообщений: 314
Добавлено: 10-11-2006 15:41
О вроде получается немного подправлю реальный сенкс.

Дундук - не беспокоить!
Группа: Модераторы
Сообщений: 1435
Добавлено: 10-11-2006 16:36
Объясните мне пожалуйста что такое альфа-канал

И еще выпендривается. Посмотри тут была тема про него

Тут могла быть ваша реклама
Группа: Сообщество GM
Сообщений: 1014
Добавлено: 11-11-2006 00:22
У меня никакого эффекта, может пример сделаешь?

Страницы: 1 2 Next>> новая тема
Раздел: 
Game Maker Форум / Вопросы и Ответы (Для Опытных) / Чернобелый фильтр

Отвечать на темы в данном разделе могут только зарегистрированные пользователи

Отвечать на темы могут только зарегистрированные пользователи

KXK.RU