Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 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
3-1123057899
surkis
2005-08-03 12:31
2005.09.25
Поскажите компоненты и репорты


2-1124199768
Гость22
2005-08-16 17:42
2005.09.25
Как не дать закрыть форму?


3-1124186950
stud
2005-08-16 14:09
2005.09.25
упроавление вложенными курсорами MSSQL2000


2-1124303411
rts111
2005-08-17 22:30
2005.09.25
Добавление названия нового окна в меню родительского.


1-1125317950
Cherrex
2005-08-29 16:19
2005.09.25
Как динамически добавить компонент на форму





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