Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.26;
Скачать: CL | DM;

Вниз

Затухание экрана   Найти похожие ветки 

 
Максим   (2004-05-23 06:08) [0]

Как сделать затухание экрана как в играх?


 
Cerber ©   (2004-05-23 12:04) [1]

Медленно уменьшая яркость на мониторе но енто тока физически.:)


 
Palladin ©   (2004-05-23 14:20) [2]

Вообще то в играх присутствует понятие источника света. И тушат обычно его, а не экран... Либо работают с палитрой текстуры.


 
kas-t   (2004-05-23 15:40) [3]

С компонентом DelphiX идет демка реализующая подобное действо. Но обломало то, что там затухание получается сделать только в 8 битном цвете :(.


 
Thor ©   (2004-05-23 19:48) [4]

вот пример по Power Draw:

unit Effects;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, PInput, PowerD3D, AGFUnit, Unit2, DirectDraw, PDrawEx, DirectInput8, PowerFont, PowerTiming, DirectXGraphics,
 VTDUnit;

Procedure FadeIn(PowerGraph: TPowerGraph; Time: cardinal);
Procedure FadeOut(PowerGraph: TPowerGraph; Time: cardinal);

implementation

Procedure FadeIn(PowerGraph: TPowerGraph; Time: cardinal);
var
 i,j : integer;
 Gamma : IDirectDrawGammaControl;
 NewGamma,OldGamma : TD3DGammaRamp;
begin
 PowerGraph.D3DDevice8.QueryInterface(IID_IDirectDrawGammaControl,Gamma);
 PowerGraph.D3DDevice8.GetGammaRamp(OldGamma);
 PowerGraph.D3DDevice8.GetGammaRamp(NewGamma);
 for j := 1 to 100 do
 begin
  for i :=0 to 255 do
  begin
   NewGamma.green[i]:=(OldGamma.green[i]*j)div 100;
   NewGamma.blue[i]:=(OldGamma.blue[i]*j)div 100;
   NewGamma.red[i]:=(OldGamma.red[i]*j)div 100;
  end;
 PowerGraph.D3DDevice8.SetGammaRamp(0,NewGamma);
 Sleep(Time);
 end;
 Gamma := nil;
end;

Procedure FadeOut(PowerGraph: TPowerGraph; Time: cardinal);
var
 i,j : integer;
 Gamma : IDirectDrawGammaControl;
 NewGamma,OldGamma : TD3DGammaRamp;
begin
 PowerGraph.D3DDevice8.QueryInterface(IID_IDirectDrawGammaControl,Gamma);
 PowerGraph.D3DDevice8.GetGammaRamp(OldGamma);
 PowerGraph.D3DDevice8.GetGammaRamp(NewGamma);
 for j := 100 downto 1 do
 begin
  for i :=0 to 255 do
  begin
   NewGamma.blue[i]:=(OldGamma.blue[i]*j)div 100;
   NewGamma.green[i]:=(OldGamma.green[i]*j)div 100;
   NewGamma.red[i]:=(OldGamma.red[i]*j)div 100;
  end;
 PowerGraph.D3DDevice8.SetGammaRamp(0,NewGamma);
 Sleep(Time);
 end;
 if NewGamma.red[0]=0 then
 PowerGraph.D3DDevice8.SetGammaRamp(0,oldGamma);
 Gamma := nil;
end;

end.


 
Ландграф Павел ©   (2004-05-23 20:39) [5]

Короче делай так, выводи на экран черные квадраты (bmp), ну всмысле заполняй экран тайлами с прозрачность 255, и постепенно повышай до нуля через таймер:)


 
Thor ©   (2004-05-23 23:37) [6]


> Ландграф Павел ©   (23.05.04 20:39) [5]

это будет медленно и будет жрать ресурсы.


 
Думкин ©   (2004-05-24 06:28) [7]

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


 
Ландграф Павел ©   (2004-05-24 13:45) [8]

Thor> Он что, будет тушить экран через каждые пять секунд? я так понимаю это переход между уровнями или нечто подобное... и на "ресурсы" это никак не отразится, если конечно нигра не будет создаваться под 233MHz Для ускорения процесса можно тайлы сделать размером 64х64...


 
Thor ©   (2004-05-24 15:34) [9]


> Ландграф Павел ©   (24.05.04 13:45) [8]

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


 
Ландграф Павел ©   (2004-05-24 17:59) [10]

Хотя согласен... попробывал с DelphiX это реализовать... тормоза жуткие:)) а на Повере все Окэй)


 
cyborg   (2004-05-24 18:21) [11]

Лбо менять гамму, либо в 3D свет, остальное всё чепуху советуют.


 
NailMan ©   (2004-05-24 18:28) [12]

Гамма рампа может не у всех поддерживатся.

Я во у себя(D3D9 правда) затухание вообще 2-мя полигонами реализовал. Просто и надежно.

---
WBR, NailMan aka 2:5020/3337.13


 
Dabus   (2004-05-28 20:08) [13]

Как всегда делалось всегда и во всех играх затухание делается приводом всех цветов палитры к чёрному. Хоть лопни, но проще и правильней идеи я не видел.


 
lyeh   (2004-05-29 01:00) [14]

Согласен с Thor, можно гаммой, так грамотнее, но если поддержки нет, то облом. А черными тайлами и альфа-блендингом пользоваться не стоит: там определяются src-пиксел, dest-пиксел, а потом они еще и смешиваются с учетом значения прозрачности. В итоге получаем относительно высокую загрузку процессора. Изменение палитры годится для игр с 256 цветами, это что еще за игры? Шашки в окне?? Так вот, если с гаммой никак, то надо заливать весь экран эффектом Multiply постепенно уменьшая значение до нуля, здесь dest-пиксел "просто умножается" это самое значение - по сравнению с alpha это большой выигрыш в скорости

2 Ландграф Павел ©
Если он не будет тушить экран каждые 5 секунд, это не значит, что можно использовать тормозные методы.


 
Thor ©   (2004-05-29 01:51) [15]


> lyeh   (29.05.04 01:00) [14]

на моей mx400 это все работает, а на машинах с еще более старой картой, игры, делаемые здесь - вряд ли пойдут.


 
lyeh   (2004-05-29 02:03) [16]

2 Thor ©
Согласен, если карта не поддерживает даже гамму, то нечего вообще браться за всякого рода блендинги, разве что софтверные, типа DelphiX, но тогда какой процессор нужен! :)

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

А вообще, я не видел карты, которая поддерживала бы 3D, а гамму нет...


 
cyborg ©   (2004-05-29 03:39) [17]

Лбо менять гамму, либо в 3D свет, остальное всё чепуху советуют.



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

Текущий архив: 2004.09.26;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.059 c
1-1094717450
prorok2
2004-09-09 12:10
2004.09.26
CheckListBox и перерисовка


1-1094640944
Толик
2004-09-08 14:55
2004.09.26
Как сделать загрузку из файла типа ini в TMemo


11-1080766748
Максим
2004-04-01 00:59
2004.09.26
Как в RichEdit добавить картинки?


3-1093844209
Drozdov A
2004-08-30 09:36
2004.09.26
Запрос SQL в Делфи


14-1094131157
KSergey
2004-09-02 17:19
2004.09.26
Стартовая страничка Explorer