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

Вниз

Полноэкранный режим в Direct3D   Найти похожие ветки 

 
MrAngel   (2005-03-20 17:55) [0]

Нашёл в интернете информацию, но всё это работает не корректно или не работает вообще.

Чую я ещё не видел более проффесионального подхода к этой проблеме. Ребята, а как вы это реализовываете?

Ответы типа поставь переменную  windowed = TRUE не принимаются. Меня интересует прежде всего работа с самим окном при переходе в полноэкранный режим и обратно. Всё это хотелось бы делать через WINAPI, а не через TFORM.


 
MrAngel   (2005-03-21 17:56) [1]

Никто не знает? - очень жаль...


 
reticon ©   (2005-03-21 17:59) [2]

у меня под DirectDraw нормально работает...


 
Sphinx ©   (2005-03-21 18:03) [3]

Посмотри в примерах по DirectDraw на clootie там точно был один пример переключения из полноэкранного режима в оконный (ну и наоборот соответственно) написанный на WinAPI.

Что конкретно тебе интересно?

В двух словах что понял из твоего вопроса:
1) создавай окно размерами с игровой экран, и в координатах 0, 0
2) Создавай интерфейсы DX и переключайся в полноэкранный режим
3) всё...ты получаешь окно развернутое на весь экран, и приложение работающее в полноэкранном режиме...


 
MrAngel   (2005-03-21 19:41) [4]

Sphinx © ...
Ах вот почему небыло ответов.
Короче вот какая проблема. Да всё как бы работает. Всё показывает и в оконном режиме и в полноэкранном, НО !!!

1. При переходе с полноэкранного режима есть проблема. Заключается она в том, что если в полном экране было скажем 320*240, а в оконном - 1024*768, то абсолютно все окна уменьшаются в размерах.

Ну допустим какой нибудь там Explorer был открыт на весь экран. Меняем режим  на Full SCreen и затем обратно (разрешения я уже указал). В результате наш Explorer имеет width=320 и height=240 и причём снопки в его заголовке говорят, что окно развёрнуто.

2. Следующая проблема. Почему в полно экранном режиме не отключается перерисовка у всех окон? Весьмя не интересно наблюдась как на моей картинке вдруг начинает моргать окно. Да - знаю выход есть - сделать своё окно на весь экран. Тогда вопрос как мне ето сделать через API даже если я работаю через TFORM. Просто приведите примерный список функций а дальше уж я сам разберусь.

3. Далее. Скажем вторую проблему я решил. Но вот блин а ?!!! моргают всякие там Task Bar"s - как бы их мне временно отключить?

4. Проблема перехода из полноэкранного в оконный режим, когда надо восстанавливать как окно приложения так и остальные окна.

Кидаю вам ссылку своего приложения. Просто понажимайте Alt+Enter для переключения режимов. Сами всё увидите.
http://www.hot.ee/delphi1/test.rar


 
MrAngel   (2005-03-21 19:45) [5]

Ах да забыл добавить.
Само приложение при запуске ничего не выдаст.
В меню нажмите Initialize Engine, затем Start Rendering.

И ещё. Если не сложно напишите если были какие баги и прочие нехорошести.


 
Sphinx ©   (2005-03-21 22:48) [6]

Я как-то не заморачивался переключениями между оконным режимом и полноэкранным, по при работе с полноэкранным я обычно создаю WinAPI окно, а не VCL. Просто создаю окно
 APIWindow.WindowHandle := CreateWindowEx
                        (WS_EX_APPWINDOW,    // создается окно приложения
                         PChar(aWndClass),   // имя оконного класса класс
                         PChar(aWndName),    // заголовок окна
                         WS_POPUP,           // стиль окна
                         { задаются координаты верхнего левого угла }
                         aLeft,              // позиция по горизонтали
                         aTop,               // позиция по вертикали
                         { задаются параметры окна }
                         aWidth,             // ширина окна
                         aHeight,            // высота окна
                         0,                  // указатель на родительского окна
                         0,                  // указатель на меню окна
                         aHInst,             // указатель на приложение создавшее окно
                         nil);               // указатель на дополнительные параметры окна
где aLeft и aTop = нулевые, а aWidth и aHeight - размеры экрана. Только не совмещай VCL & WinAPI. А с TForm при переходе в полноэкранный режим делай следующее:
Form1.BorderStyle := bsNone;
Form1.SetBounds(0, 0, ScreenWidth, ScreenHeight);
и все "моргания" обычно изчезают. Только не забудь запомнить параметры и вернуть при смене на оконный режим :)

А по поводу смены разрешения...у DDraw есть команда возвращающая параметры экрана к исходным RestoreDisplayMode попробуй, может поможет ? Вызывай перед освобожденим интерфейса.


 
Sphinx ©   (2005-03-21 23:24) [7]

Сорри....RestoreDisplayMode это команда основного интерфейса IDirectDraw7, забыл указать :)


 
MrAngel   (2005-03-22 00:40) [8]

Хммююю создавать окно поверх все окон? Интересно - это вариант. Надо будет попробовать. Спасиб за наводку (RestoreDisplayMode) - будут результаты сообщу сдесь же.



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

Форум: "Игры";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.04 c
1-1117594257
RomanSergeevich
2005-06-01 06:50
2005.06.29
ярлык программы


8-1109409338
puky
2005-02-26 12:15
2005.06.29
Шаблон плугина для Фотошопа


3-1116307822
kyn66
2005-05-17 09:30
2005.06.29
Как удалить ключевой столбец из таблицы Access ?


14-1117435899
juice
2005-05-30 10:51
2005.06.29
Протоколы канального уровня


1-1117638304
Yandexman
2005-06-01 19:05
2005.06.29
как тип String привести к PWideChar?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский