Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.09.25;
Скачать: CL | DM;

Вниз

Проблема при переносе проги из оконного в полный экран в 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;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.029 c
14-1125277977
Учащийся
2005-08-29 05:12
2005.09.25
Как в фотошопе нарисовать элипс толщиной в пиксель?


14-1125654972
Jeer
2005-09-02 13:56
2005.09.25
GPS в России: восстание министров


9-1113483144
Qwertyk
2005-04-14 16:52
2005.09.25
С чего начинать?


8-1115329602
ronyn
2005-05-06 01:46
2005.09.25
Как подключяются кодаки?


6-1117738965
GEEK
2005-06-02 23:02
2005.09.25
Кто работал с idHttpProxyServer? Ошибка вощем...