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

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

Приколы с DirectX !!!


Sword-Fish ©   (2003-04-09 22:37:00) 

Добрый вечер !!!!
У меня очередной вопрос ...
В привмерах с DirectX есть пример с FadeOut и FadeIn и Flash ...
Так вот там только для палитры в 256 цветов ...
А можно сделать тоже самое но только с 16 битными картинками и как это сделать (желательно пример) !!!
Please ...
С уважением Sword-Fish !!!


Sword-Fish   (2003-04-10 16:19:00) [1]

Спасибо большое за примеры !!!


Думкин   (2003-04-10 09:24:00) [2]

Но лучше так:
//Передаем первичную поверхность
procedure Fade(FDDSPrimary : IDirectDrawSurface7);
var
Gamma : IDirectDrawGammaControl;
NewGamma,OldGamma : TDDGammaRamp;
i,j : integer;
begin
FDDSPrimary.QueryInterface(IID_IDirectDrawGammaControl,Gamma);//Получаем интерфейс
Gamma.GetGammaRamp(0,OldGamma);//Сораняем старое
Gamma.GetGammaRamp(0,NewGamma);//И новое - надо!
//Гасим экран за 100 циклов.
for j := 100 downto 1 do
begin
//Получаем новые значения
for i :=0 to 255 do
begin
NewGamma.red[i] := (OldGamma.red[i] *j)div 100;
NewGamma.green[i] := (OldGamma.green[i]*j)div 100;
NewGamma.blue[i] := (OldGamma.blue[i] *j)div 100;
end;
Gamma.SetGammaRamp(0,NewGamma);//Применяем новые значения
Sleep(50) //Немного ждем и далле по циклу
end;

( 0,oldGamma)

Но лучше так:
//Передаем первичную поверхность
procedure Fade(FDDSPrimary : IDirectDrawSurface7);
var
Gamma : IDirectDrawGammaControl;
NewGamma,OldGamma : TDDGammaRamp;
i,j : integer;
begin
FDDSPrimary.QueryInterface(IID_IDirectDrawGammaControl,Gamma);//Получаем интерфейс
Gamma.GetGammaRamp(0,OldGamma);//Сораняем старое
Gamma.GetGammaRamp(0,NewGamma);//И новое - надо!
//Гасим экран за 100 циклов.
for j := 100 downto 1 do
begin
//Получаем новые значения
for i :=0 to 255 do
begin
NewGamma.red[i] := (OldGamma.red[i] *j)div 100;
NewGamma.green[i] := (OldGamma.green[i]*j)div 100;
NewGamma.blue[i] := (OldGamma.blue[i] *j)div 100;
end;
Gamma.SetGammaRamp(0,NewGamma);//Применяем новые значения
Sleep(50) //Немного ждем и далле по циклу
end;

Gamma.SetGammaRamp(0,oldGamma);//Возвращаем старые значения(если надо)
Gamma := nil //Уничтожаем интерфейс

end;


Думкин   (2003-04-10 06:10:00) [3]

http://gdsw.narod.ru/Docs/gamma_cont.htm


A_n_t   (2003-04-10 05:50:00) [4]

Обработать всю картинку по пиксельно - но будет т-о-р-м-о-з-и-т-ь :)


Наверх

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