Вниз
Скачать: CL | DM;

Приколы с DirectX !!!   Найти похожие ветки 

 
Sword-Fish ©   (2003-04-09 22:37) [0]

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


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

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


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

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


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

Но лучше так:
//Передаем первичную поверхность
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;


 
Sword-Fish ©   (2003-04-10 16:19) [4]

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



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.014 c
1-40343
PsoFT
2003-10-02 02:05
2003.10.13
handle


4-40734
likeanangel
2003-08-08 11:12
2003.10.13
Графический вывод на DC


14-40601
xGhost
2003-09-24 15:27
2003.10.13
Обнуление настроек биоса + пароля ( готовый код )


14-40634
Knight
2003-09-22 11:30
2003.10.13
---|Ветка была без названия|---


14-40644
Yakudza
2003-09-23 11:45
2003.10.13
MacOS




   Наверх