Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема при переносе проги из оконного в полный экран в GLScene [Delphi, Windows]


Страницы:   1 2

Fosgen ©   (2005-03-16 19:27:00) 

Приветствую. Помогите кто чем может. :) Накропал прогу. С помощью GLScene. В оконном режиме. С формой. Решил попробовать ее вполноэкранном режиме. Переделал в DataModule, как в примерах показано. А при выполнении след. начального куска программы:
GLCamera1.SceneScale:=GLSceneViewer1.Width/160;
GLFullScreenViewer1.Active:=True;
if GLFullScreenViewer1.Handle=0 then Exit; //это уже я пробовал - не помогло.

На второй строке при активации вьювера происходит переключение в режим, затем приложение с неизвестной системе ошибкой "валится". Наводит на мысль что в чем-то виноват Cadencer - в примере его не было. При отключении Cadencer'а рисуется черный экран. Но как в таком случае чего рендерить - без Cadencer? В чем я туплю? Подскажите пожалуйста. Заранее спасибо за любой конструктивный ответ.


Fosgen   (2005-05-27 13:16:00) [1]

2: WandR  Чего-то я не понял вопроса - обновляется все автоматически при условии GLCadencer.Enabled:=True; Ну и соответственно при взаимосвязанных GLCadencer & GLScene...
В чем замес?


WandR   (2005-05-24 12:45:00) [2]

Кто подскажет как в GLFullScreenViewer обновить сцену? Я привык в обычном GLSceneViewer кинул в GLCadencer строку GLSceneViewer1.Invalidate; и все а тут хз че=(


Fosgen   (2005-03-23 10:14:00) [3]

Архив лежит по адресу adm.trening-omsk.ru сразу - на первой странице. Только за "дизайн" сайта просьба не пинать - это был первый мой сайт и я им не занимался уже года два...


Xeno   (2005-03-23 08:40:00) [4]

Лучше выложи где-нибудь на обозрение...


Fosgen   (2005-03-22 17:01:00) [5]

Вот тут подумал - я всякие вопросы задаю, а о чем... Так что ежли кому интересно - могу кинуть мылом архивчик скриншотов того что делаю. 132 кб. JPEG 1024x768...


Xeno   (2005-03-22 06:52:00) [6]

У меня так реализованно переключение в полноэкранный режим и обратно, по нажатию клавиши:
 // полноэкранный режим -
 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 06:09:00) [7]

Дык, сделал, а она - не работает - с той самой вышеуказанной ошибкой. Самая крупная разница между моей прогой и примером - в наличии таймера и каденсера. В примере-то они в цикле все крутили и интерактивность им не требовалась... Я полнедели убил перетаскивая свое "произведение" в формат DataModule, и как оказалось - зазря. :( А с кодом - следующая фигня - если его приводить - то весь придется, а это - 2-3 тыс. строк... То что касалось непосредственно TGLSceneViewer - я привел в самом начале. Это буквально первые строки процедуры TForm1.FormCreate(Sender: TObject); А потом уже всякое остальное (звук, загрузка данных и т.д.) идет. А падало все на GLFullScreenViewer1.Active:=True;


Xeno   (2005-03-22 06:04:00) [8]

У меня тоже подобный способ работает, только если TGLSceneViewer.visible:=false у меня ничего не пропадает(при условии что камера присвоенна GLFullScreenViewer'у), видюха Radeon9600PRO, жаль никто неможет объяснить почему так происходит...


DeadMeat   (2005-03-22 00:25:00) [9]

Ну сделай как там..
Я же не зря просил привести весь код. Догадками конечно можно, но долго и тяжко...

---
...Death Is Only The Begining...


Fosgen   (2005-03-21 21:04:00) [10]

Хто бы их знал... Стоит Detonator версии драйверов 6.14.10.5306. Карта соответственно - GF4 MX400. Винда 2000 SP3 интегрированный... Ну да ладно - пример-то из GLScene'ских работает...


DeadMeat   (2005-03-21 19:27:00) [11]

Хмм... Фигня какая та... Никогда с тами не сталкивался.. Может дрова? Обычно все на них валят.

---
...Death Is Only The Begining...


Fosgen   (2005-03-21 18:32:00) [12]

Да и еще - Если выполнить TGLSceneViewer.visible:=false, то на GLFullScreenViewer все тоже пропадает...


Fosgen   (2005-03-21 18:31:00) [13]

Спасибо, конечно за столь подробную разборку вопроса. Но могу подтвердить следующее - есть форма (обычная TForm) на ней валяется TGSceneViewer, со всеми причиндалами. Когда я пробовал реализовать полноэкранку как в примере к GLScene - получал либо ошибку при GLFullScreenViewer1.Active:=True либо в лучшем случае - просто черный экран. Ошибка была такая что Дельфя ее определить не смогла, при запуске из под чистой винды - та же фигня - неопределимая ошибка. Помогло следующее:
На ту самую первоначальную форму по совету Xeno поставил GLFullScreenViewer и в процедуре TForm1.FormCreate выполняется следующее:
GLSceneViewer1.Cursor:=crNone;
GLFullScreenViewer1.Cursor:=crNone;
GLFullScreenViewer1.Active:=True;


(курсор я в PostRender событии рисую). Работает. Без всяких заморочек. Полноценный полноэкранный. Камеру установил в DesignTime, но переключает и в процессе работы нормально. Почему не хотела как в примере пахать - хто ее знает...


Da Stranger   (2005-03-18 16:59:00) [14]

Молодец, что умеешь признавать свои ошибки. Удачи :)))


Xeno   (2005-03-18 07:28:00) [15]

Приношу извинения,я был не прав,как и советовал Da Strange для перехода в полноэкранный режим TGLFullScreenViewer присваивается камера,GLFullScreenViewer1.Active:=True и свойство visible  у TGLSceneViewer(если он присутствует) устанавливается в false, вроде как больше ничего не требуется....


Xeno   (2005-03-18 06:42:00) [16]

>Da Stranger ©  
Хотя ты прав конечно, TGLSceneViewer и TGLFullScreenViewer и правда независимы, тем не менее вариант совместного их сипользования всё равно прокатывает...


Xeno   (2005-03-18 06:31:00) [17]

Правильно или нет,но ведь помогло человеку,а с таким количеством информации по вопросу которую он дал трудновато дать правильный ответ,к тому-же сам учась пока,так что по мере сил.Объясни тогда почему предложенный мной способ  работает,да и демках поставляемых с GLScene тоже есть пример подобного использования???


Da Stranger   (2005-03-17 15:45:00) [18]


> Строка GLFullScreenViewer1.Camera:=GLCamera не нужна ,GLFullScreenViewer1
> работает со стандартным вьюером,при  срабатывании GLFullScreenViewer1.Active:=True;
> изображение берётся из стандартного TGLSceneViewer'а

Извини, конечно, но это бред. TGLSceneViewer и TGLFullScreenViewer НЕЗАВИСИМЫ и один может прекрасно существовать без другого. Посмотри пример \GLScene\Demos\rendering\fullscreen\ Где ты там видишь TGLSceneViewer?? Лучше молчать, чем давать неправильные советы.


Fosgen   (2005-03-17 10:49:00) [19]

2: Xeno - Спасибо. Я-то полностью от формы отказался - через организацию DataModule, а до предложенного варианта не додумался... Работает однако. ВСех благодар за скорые ответы - не ожидал...


Fosgen   (2005-03-17 10:49:00) [20]

2: Xeno - Спасибо. Я-то полностью от формы отказался - через организацию DataModule, а до предложенного варианта не додумался... Работает однако.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо