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

Вниз

Как сделать переходы между менюшками?   Найти похожие ветки 

 
NailMan ©   (2003-08-11 12:58) [0]

Собсно сабж.

Образец демо-версии менюшек (*.EXE) можно скачать здесь:
http://nailman.narod.ru/zakroma/UT_GUI_Demo.rar

RAR 3.0, 755Кб. Чистый DirectX;

Версия исправленная(раньше без джоя не запускалась :-)) и добавлены червячки ala Матрица.

Сосбно не радует что переход из менюшки в менюшку резкий(резко меняется бэкграунд). Хотелось бы сделать это дело через переход в виде:
- шторок сверху-снизу. выхотя из менюшки схлопываются, а прри входе расхлопываются.
- затухание экрана
- еще как-то

Пробовал делать первый вариант через рисование кусочка текстуры черного цвета(D3DXSprite-ом) - какие-то левые линии на краях видны, которые масштабируются вместе со спрайтом. Пробовал делать через вершинный буфер(XYZRHW) 4 треугольника (2 снизу 2 сверху) - какие-то глюки рисуются.

Второй вариант я не догоняю как реализовать. Гаммарампой? Че-то не понял я как юзать структуру TD3DGAMMARAMP. Как затенить весь экран с ее помощью?
Возникла идея сделать прямоугольник на весь экран, черного цвета и когда должно происходить затемнение просто увеличивать альфу у вершин/материала.

Кто чего подскажет? Может более оригинальные варианты?


 
Карлсон ©   (2003-08-11 13:57) [1]

насчет гаммарампы - насколько я понял, именно так и делается это самое затухание.
где-то тут была такая тема, там один человек написал модуль для DirectX"а.
я его переделал для DelphiX:
unit Effects;

interface

uses
Windows, DXDraws, DirectDraw;

Procedure FadeIn(DXDraw: TDXDraw; Time: cardinal);
Procedure FadeOut(DXDraw: TDXDraw; Time: cardinal);

implementation

Procedure FadeIn(DXDraw: TDXDraw; Time: cardinal);
var
i,j : integer;
Gamma : IDirectDrawGammaControl;
NewGamma,OldGamma : TDDGammaRamp;
begin
DXDraw.Primary.GammaControl.QueryInterface(IID_IDirectDrawGammaControl ,Gamma);
DXDraw.Primary.GammaControl.GetGammaRamp(0,OldGamma);
DXDraw.Primary.GammaControl.GetGammaRamp(0,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;
DXDraw.Primary.GammaControl.SetGammaRamp(0,NewGamma);
Sleep(Time);
end;
Gamma := nil;
end;

Procedure FadeOut(DXDraw: TDXDraw; Time: cardinal);
var
i,j : integer;
Gamma : IDirectDrawGammaControl;
NewGamma,OldGamma : TDDGammaRamp;
begin
DXDraw.Primary.GammaControl.QueryInterface(IID_IDirectDrawGammaControl ,Gamma);
DXDraw.Primary.GammaControl.GetGammaRamp(0,OldGamma);
DXDraw.Primary.GammaControl.GetGammaRamp(0,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;
DXDraw.Primary.GammaControl.SetGammaRamp(0,NewGamma);
Sleep(Time);
end;
if NewGamma.red[0]=0 then
DXDraw.Primary.GammaControl.SetGammaRamp(0,oldGamma);
Gamma := nil;
end;

end.

может и найду первоначальный источник или ту ветку.


 
Карлсон ©   (2003-08-11 13:59) [2]

вот та ветка: http://delphimaster.net/view/9-1050737499/


 
NailMan ©   (2003-08-11 14:09) [3]

Пасиба, сегодня буду ковырять и обновлять.

Кстате, а управление рампой на всех видюхах работает? Что произойдет если я начну ее дрюкать, а видюха этого аппаратно не поджеривает?


 
TButton ©   (2003-08-11 16:14) [4]

а чо за юнит DirectDraw?


 
Всеволод Соловьёв ©   (2003-08-11 21:58) [5]

>а чо за юнит DirectDraw?
что за зверь DirectX?


 
TButton ©   (2003-08-11 23:41) [6]

блин. я не дурак.
Я знаю что за зверь директ Х. Но (!) компилятор жалуется на отсутствие DirectDraw.dcu, ну я ему конечно не поверил "как так нету?!" и полез искать, оказывается действительно нету. Вот почему испрашиваю что ето и откуда.


 
Всеволод Соловьёв ©   (2003-08-12 11:29) [7]

а исходник pas-файлом есть? если есть, так что за проблема?


 
TButton ©   (2003-08-12 15:30) [8]

это я не подумал...
нету. мож скачать его где? а мож есть у кого?


 
NailMan ©   (2003-08-12 15:51) [9]

Для какого директа тебе выслать?

Есть для 8.0/8.1 и 9.0


 
NailMan ©   (2003-08-12 15:55) [10]

Короче я тебе послал оба варианта. Пиши если чё-то еще хочет из модулей.


 
TButton ©   (2003-08-12 19:02) [11]

gracies



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

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

Наверх




Память: 0.49 MB
Время: 0.03 c
3-79580
}|{yk
2004-01-28 15:48
2004.02.25
Наколбасил я некую древовидную структуру на Oracle


6-80076
Vilux
2003-12-15 21:22
2004.02.25
WebBrowser и данные формы


1-79729
Cosinus
2004-02-12 13:13
2004.02.25
Оценка оставшегося времени...


1-79725
Awod
2004-02-12 11:59
2004.02.25
Плывушие шрифты


3-79595
ch_victor
2004-02-02 10:45
2004.02.25
Медленно работает MSSQL сервер