Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Гамма-коррекция ЯРКОСТИ (а не КОНТРАСТА) нужна.. [D6, Win95/98, WinME, Win2k, WinXP]


IGray ©   (2002-11-01 03:26:00) 

Пытаюсь тут встроить гамма-коррекцию яркости в мою игрушку.
Попробовал менять яркость согласно следующему примерчику из одной
книжки

dwGamma := 0;
for iColor := 0 to 255 do begin
ddgr.red[iColor] := dwGamma;
ddgr.green[iColor] := dwGamma;
ddgr.blue[iColor] := dwGamma;
dwGamma := dwGamma + trackbarGamma.Position;
end;
hr := GammaControl.SetGammaRamp( 0, ddgr );

но в реальности уменьшалась КОНТРАСТНОСТЬ, а не ЯРКОСТЬ, т.е. число полутонов не увеличивалось - изображение просто равномерно _гасло_ А есть тут герой, знающий как ЯРКОСТЬ primary surface менять?
Заранее спасибо за ответ!


Separator   (2002-11-01 08:52:00) [1]

Посмотри здесь, может поможет:
http://algolist.manual.ru/graphics/filter/index.php


Dr_Mike   (2002-11-01 03:44:00) [2]

В принципе, я пользовался другим преобразованием, но разницы не скажу, надо будет проверить, что получается по твоему методу.

{Red, Green, Blue - от 0 до 1}

Red:= Round(63*Exp(Ln(Red)/Gamma));
Green:= Round(63*Exp(Ln(Green)/Gamma));
Blue := Round(63*Exp(Ln(Blue)/Gamma));

Кстати, и встречный вопрос - а почему количество полутонов должно возрасти ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо