![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Приколы с 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]
Обработать всю картинку по пиксельно - но будет т-о-р-м-о-з-и-т-ь :)