Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2004.02.25;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.033 c
1-79959
Zaratustra
2004-02-11 17:33
2004.02.25
TClientSocket без форм. Возможно ли это?


4-80363
AlexeyITN
2003-12-17 10:40
2004.02.25
NetMessageBufferSend


11-79690
ratamahatta
2003-06-05 18:44
2004.02.25
Размер заголовков в TKOLTabControl


3-79661
SasaR
2004-01-30 11:41
2004.02.25
InterBase :(


1-79761
Igor G
2004-02-14 12:01
2004.02.25
Как уменьшить изображение





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский