![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Смена разрешения на лету.
MrAngel © (2004-06-03 23:52:00)Сначала думал, что через IDirect3DDevice9::Reset, но не тут то было. Может кто подскажет, как это дело реализуется ?
MrAngel (2004-06-09 19:11:00) [1]Thanks.
MrAngel (2004-06-09 19:10:00) [2]А - ясно я понял идею. Думаю так и буду делать.
NailMan (2004-06-09 11:23:00) [3]MrAngel
Ну как делаешь DLL-ку, в ней делаешь форму(ы). Соответственно первая показываемая форма это "загрузчик" с предменю:
[ЗАПУСК ИГРЫ]
[НАСТРОЙКИ]
[ВЫХОД]
на фон формы делаем какой-нить скриншотик на тему нашей игрушки :-)
Далее вызов это формы делаем так:
Function ShowLoader:Integer;
Var Form:TLoaderForm;
begin
Form:=TLoaderForm.create(nil);
try
Result:=Form.Execute;
finally
Form.Free;
end;
end;
А метод Execute выгляит так:
Function TLoaderForm.Execute:integer;
begin
ECode:=0;
Showmodal;
Result:=ECode;
end;
Ну в этой форме на кнопочки вешаем следующее:
procedure TLoaderForm.BitBtn1Click(Sender: TObject);
begin
ECode:=1;
Close;
end;
Юзер нажал запуск и возвращается значение 1.
procedure TLoaderForm.BitBtn2Click(Sender: TObject);
begin
ShowMainOptions;
ECode:=1;
end;
Юзер нажал кнопку "Настройки" и вызываем показ формы настроек(типа процедура аналогичная по контенту ShowLoader.
procedure TLoaderForm.BitBtn3Click(Sender: TObject);
begin
ECode:=2;
Close;
end;
Типа юзер нажал выхо(раздумал наверно играть).
Далее в DLL-ке экспортируешь только ShowLoader и в программу импортируешь Function ShowLoader:Integer; stdcall; external 'наша_ДЛЛ-ка.dll';
И в начале программы делаешь так
If ShowLoader=2 then Exit;
Т.е. если юзер нажал выход, то выходим иначе ничего не делаем и программа выполняется как и было задумано.
А вот в самой форме настроек надо сделать комбобоксы всякие с разрешениями и обязательно все это сохраняем в файл настроек, которые уже самой игрой будут считываться и на основе них и создавать девайс.
В целом можно вообщ все настройки вынески на внешнюю форму, чтобы не геморриться с GUI. Все таки на нормальном VCL проще сделать подробные настройки нежели на ограниченном игровом GUI. Хотя как знать - часть настроек не связанных с пересозданием девайса можно и в самой игре реализовать, хотя бы в реализации консоли.
---
WBR, NailMan aka 2:5020/3337.13
MrAngel (2004-06-09 02:26:00) [4]2 Vertex ok посмотрю.
2 NailMan - можно по подробнее?
NailMan (2004-06-07 18:38:00) [5]Все уже давно перешли на внешние настройки параметров дисплея. Так что делай внешнюю DLL с настройками и не парься. ну незачем юзверю в процессе игры разрешение/битность менять.
---
WBR, NailMan aka 2:5020/3337.13
Vertex (2004-06-07 16:07:00) [6]2 MrAngel - неа это не FrameWork это Direct3D SDK
MrAngel (2004-06-05 00:19:00) [7]Нуу - тогда легче закрыть приложение и открыть его с другими настройками :-)
NailMan (2004-06-04 19:38:00) [8]MrAngel
К сожалению нет. Такова конструкция Direct3D.
---
WBR, NailMan aka 2:5020/3337.13
NailMan (2004-06-04 19:38:00) [9]MrAngel
К сожалению нет. Такова конструкция Direct3D.
---
WBR, NailMan aka 2:5020/3337.13
MrAngel (2004-06-04 19:30:00) [10]2 NailMan © - да, есть такой вариант. Из мануала мелко софта вычитал. Неужели ничего менее маштабного нет? :-)
2 A22 - с использованием их классов ? Речь идёт про Frame Work ?
A22 (2004-06-04 18:25:00) [11]если будешь делать в VC++ с использованием их классов, то там имеется функция OnChangeDevice. Кажись, так ее звать
NailMan (2004-06-04 15:52:00) [12]Мочишь девайс, переделываешь презент_параметерс и заново создаешь, а заодно и все ресурсы(текстуры, буферы и т.д.)
:-)
---
WBR, NailMan aka 2:5020/3337.13