Форум: "Игры";
Текущий архив: 2005.09.25;
Скачать: [xml.tar.bz2];
ВнизПроблема при переносе проги из оконного в полный экран в GLScene Найти похожие ветки
← →
Fosgen (2005-03-16 19:27) [0]Приветствую. Помогите кто чем может. :) Накропал прогу. С помощью GLScene. В оконном режиме. С формой. Решил попробовать ее вполноэкранном режиме. Переделал в DataModule, как в примерах показано. А при выполнении след. начального куска программы:
GLCamera1.SceneScale:=GLSceneViewer1.Width/160;
GLFullScreenViewer1.Active:=True;
if GLFullScreenViewer1.Handle=0 then Exit; //это уже я пробовал - не помогло.
На второй строке при активации вьювера происходит переключение в режим, затем приложение с неизвестной системе ошибкой "валится". Наводит на мысль что в чем-то виноват Cadencer - в примере его не было. При отключении Cadencer"а рисуется черный экран. Но как в таком случае чего рендерить - без Cadencer? В чем я туплю? Подскажите пожалуйста. Заранее спасибо за любой конструктивный ответ.
← →
DeadMeat © (2005-03-16 19:43) [1]Приведи весь код...
---
...Death Is Only The Begining...
← →
Da Stranger © (2005-03-16 21:56) [2]Единственное, что нужно, это GLFullScreenViewer1.Active:=True;
И камеру указать в дизайн-тайме GLFullScreenViewer1.Camera:=GLCamera;
← →
Xeno © (2005-03-17 07:24) [3]Строка GLFullScreenViewer1.Camera:=GLCamera не нужна ,GLFullScreenViewer1 работает со стандартным вьюером,при срабатывании GLFullScreenViewer1.Active:=True; изображение берётся из стандартного TGLSceneViewer"а
← →
Fosgen (2005-03-17 10:49) [4]2: Xeno - Спасибо. Я-то полностью от формы отказался - через организацию DataModule, а до предложенного варианта не додумался... Работает однако.
← →
Fosgen (2005-03-17 10:49) [5]2: Xeno - Спасибо. Я-то полностью от формы отказался - через организацию DataModule, а до предложенного варианта не додумался... Работает однако. ВСех благодар за скорые ответы - не ожидал...
← →
Da Stranger © (2005-03-17 15:45) [6]
> Строка GLFullScreenViewer1.Camera:=GLCamera не нужна ,GLFullScreenViewer1
> работает со стандартным вьюером,при срабатывании GLFullScreenViewer1.Active:=True;
> изображение берётся из стандартного TGLSceneViewer"а
Извини, конечно, но это бред. TGLSceneViewer и TGLFullScreenViewer НЕЗАВИСИМЫ и один может прекрасно существовать без другого. Посмотри пример \GLScene\Demos\rendering\fullscreen\ Где ты там видишь TGLSceneViewer?? Лучше молчать, чем давать неправильные советы.
← →
Xeno © (2005-03-18 06:31) [7]Правильно или нет,но ведь помогло человеку,а с таким количеством информации по вопросу которую он дал трудновато дать правильный ответ,к тому-же сам учась пока,так что по мере сил.Объясни тогда почему предложенный мной способ работает,да и демках поставляемых с GLScene тоже есть пример подобного использования???
← →
Xeno © (2005-03-18 06:42) [8]>Da Stranger ©
Хотя ты прав конечно, TGLSceneViewer и TGLFullScreenViewer и правда независимы, тем не менее вариант совместного их сипользования всё равно прокатывает...
← →
Xeno © (2005-03-18 07:28) [9]Приношу извинения,я был не прав,как и советовал Da Strange для перехода в полноэкранный режим TGLFullScreenViewer присваивается камера,GLFullScreenViewer1.Active:=True и свойство visible у TGLSceneViewer(если он присутствует) устанавливается в false, вроде как больше ничего не требуется....
← →
Da Stranger © (2005-03-18 16:59) [10]Молодец, что умеешь признавать свои ошибки. Удачи :)))
← →
Fosgen (2005-03-21 18:31) [11]Спасибо, конечно за столь подробную разборку вопроса. Но могу подтвердить следующее - есть форма (обычная TForm) на ней валяется TGSceneViewer, со всеми причиндалами. Когда я пробовал реализовать полноэкранку как в примере к GLScene - получал либо ошибку при GLFullScreenViewer1.Active:=True либо в лучшем случае - просто черный экран. Ошибка была такая что Дельфя ее определить не смогла, при запуске из под чистой винды - та же фигня - неопределимая ошибка. Помогло следующее:
На ту самую первоначальную форму по совету Xeno поставил GLFullScreenViewer и в процедуре TForm1.FormCreate выполняется следующее:
GLSceneViewer1.Cursor:=crNone;
GLFullScreenViewer1.Cursor:=crNone;
GLFullScreenViewer1.Active:=True;
(курсор я в PostRender событии рисую). Работает. Без всяких заморочек. Полноценный полноэкранный. Камеру установил в DesignTime, но переключает и в процессе работы нормально. Почему не хотела как в примере пахать - хто ее знает...
← →
Fosgen (2005-03-21 18:32) [12]Да и еще - Если выполнить TGLSceneViewer.visible:=false, то на GLFullScreenViewer все тоже пропадает...
← →
DeadMeat © (2005-03-21 19:27) [13]Хмм... Фигня какая та... Никогда с тами не сталкивался.. Может дрова? Обычно все на них валят.
---
...Death Is Only The Begining...
← →
Fosgen (2005-03-21 21:04) [14]Хто бы их знал... Стоит Detonator версии драйверов 6.14.10.5306. Карта соответственно - GF4 MX400. Винда 2000 SP3 интегрированный... Ну да ладно - пример-то из GLScene"ских работает...
← →
DeadMeat © (2005-03-22 00:25) [15]Ну сделай как там..
Я же не зря просил привести весь код. Догадками конечно можно, но долго и тяжко...
---
...Death Is Only The Begining...
← →
Xeno © (2005-03-22 06:04) [16]У меня тоже подобный способ работает, только если TGLSceneViewer.visible:=false у меня ничего не пропадает(при условии что камера присвоенна GLFullScreenViewer"у), видюха Radeon9600PRO, жаль никто неможет объяснить почему так происходит...
← →
Fosgen (2005-03-22 06:09) [17]Дык, сделал, а она - не работает - с той самой вышеуказанной ошибкой. Самая крупная разница между моей прогой и примером - в наличии таймера и каденсера. В примере-то они в цикле все крутили и интерактивность им не требовалась... Я полнедели убил перетаскивая свое "произведение" в формат DataModule, и как оказалось - зазря. :( А с кодом - следующая фигня - если его приводить - то весь придется, а это - 2-3 тыс. строк... То что касалось непосредственно TGLSceneViewer - я привел в самом начале. Это буквально первые строки процедуры TForm1.FormCreate(Sender: TObject); А потом уже всякое остальное (звук, загрузка данных и т.д.) идет. А падало все на GLFullScreenViewer1.Active:=True;
← →
Xeno © (2005-03-22 06:52) [18]У меня так реализованно переключение в полноэкранный режим и обратно, по нажатию клавиши:
// полноэкранный режим -
if Key=VK_F4 then Begin
GLSceneViewer1.Visible := GLFullScreenViewer1.Active;
GLFullScreenViewer1.Active := Not GLFullScreenViewer1.Active;
end;
Перед этим при создании формы:
GLSceneViewer1.Camera:=FirstPersonCamera;
GLFullScreenViewer1.Camera:=FirstPersonCamera;
Всякая ерунда обрабытвается в событии от гладенцера, всё работает на ура....
← →
Fosgen (2005-03-22 17:01) [19]Вот тут подумал - я всякие вопросы задаю, а о чем... Так что ежли кому интересно - могу кинуть мылом архивчик скриншотов того что делаю. 132 кб. JPEG 1024x768...
← →
Xeno © (2005-03-23 08:40) [20]Лучше выложи где-нибудь на обозрение...
← →
Fosgen (2005-03-23 10:14) [21]Архив лежит по адресу adm.trening-omsk.ru сразу - на первой странице. Только за "дизайн" сайта просьба не пинать - это был первый мой сайт и я им не занимался уже года два...
← →
WandR (2005-05-24 12:45) [22]Кто подскажет как в GLFullScreenViewer обновить сцену? Я привык в обычном GLSceneViewer кинул в GLCadencer строку GLSceneViewer1.Invalidate; и все а тут хз че=(
← →
Fosgen (2005-05-27 13:16) [23]2: WandR Чего-то я не понял вопроса - обновляется все автоматически при условии GLCadencer.Enabled:=True; Ну и соответственно при взаимосвязанных GLCadencer & GLScene...
В чем замес?
Страницы: 1 вся ветка
Форум: "Игры";
Текущий архив: 2005.09.25;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.037 c