Установка glscene-1.0.0.2 в Lazarus-0.9.23-fpc-2.1.5-20070

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Установка glscene-1.0.0.2 в Lazarus-0.9.23-fpc-2.1.5-20070

Сообщение Slavikk » 03.08.2007 11:24:47

При работе с графикой я использую GLScene, в виду того, что многое записано до нас :D . При установке новой версии столкнулся с рядом сложностей:

1. Следуем инструкции:
- скачиваем архив, разархивируем и помещаем в папку моя_папка_Lazarus/componets/glscene/ - ваши 5 папок GLScene
- из папки моя_папка_Lazarus\components\glscene\globallinks копируем все файлы в папку моя_папка_Lazarus\packager\globallinks
- запускаем Lazarus, идём в компоненты и нажимаем в меню настройка_установленных_пакетов и далее:
- в окне доступные пакеты выбираем glscenelazarus, нажимаем клавишу установить выбранное, нажимаем клавишу сохранить и перезапустить ID, отвечаем Ok на вопрос, ждём сборки и перезапуска Lazarus, повторяем эту процедуру для пакетов : glscenecgshader, glsceneode, glss_fmodlaz, gls_winonly

2. При установки пакета glscenelazarus будут выходить ошибки и сообщение пакет неможет быть установлен. Дабы избежать их исправим:
- unit GLLCLViewer:
a) procedure TGLSceneViewer.CreateParams(var Params: TCreateParams); на procedure TGLSceneViewerLCL.CreateParams(var Params: TCreateParams);
б) procedure TGLSceneViewer.EraseBackground(DC: HDC); на procedure TGLSceneViewerLCL.EraseBackground(DC: HDC);
- unit GLLCLFullscreenViewer:
a)RegisterClasses([TGLSceneViewer, TGLFullScreenViewer]); на RegisterClasses([TGLSceneViewerLCL, TGLFullScreenViewer]);

3. После установки пакетов Lazarus незапускается требуя библиотеки:
- ode.dll, sdl.dll, fmod.dll (входят в состав GLScene)
- cg.dll и clgl.dll (имеются в интернет)

4. При попытке скомпилировать демонстрационные примеры Будут выходить ряд ошибок, пока разобрался с одной:
a)в Uses примера, поменять GLLCLViewer на GLViewer, если не находится класс TGLSceneViewer.

Пока всё - на что хватило времени. Надеюсь это вам поможет. Удачи в работе с графикой.
Последний раз редактировалось Slavikk 16.08.2007 17:31:37, всего редактировалось 1 раз.
Аватара пользователя
Slavikk
постоялец
 
Сообщения: 208
Зарегистрирован: 15.01.2007 22:34:52
Откуда: Из лесов...

Сообщение Slavikk » 13.08.2007 02:12:56

Классы установки контекста и настройки отображения

Модули: GLWin32Viewer, GLLinuxViewer, GLLCLViewer – реализуют классы запуска установки контекста на форме, для разных сред разработки: Delphi, Kylix (QT) и Lazarus (контекст: Win32, GTK, GTK2). Класс Lazarus объединяет в своём модуле код Window и Linux и вызывается через модуль GLViewer.

Модуль: GLViewer – создаётся класс TGLSceneViewer, как потомок TGLSceneViewerLCL.

Модули: GLWin32FullScreenViewer, GLLCLFullScreenViewer – реализуют классы установки контекста на форме в полноэкранном режиме, для разных сред разработки: Delphi и Lazarus (контекст: Win32, GTK, GTK2).

Для того, что бы работали некоторые демонстрационные примеры, поставляемые с GLScene, необходимо вместо модуля (в uses) GLWin32Viewer подключить модуль GLViewer или вместо GLWin32FullScreenViewer – GLLCLFullScreenViewer. Иногда замена подключаемых модулей не помогает, в таком случае создайте проект заново (визуальную часть программирования, а ваш код (который написали лично вы) можно просто скопировать). В большинстве случаев помогает.

Надо будет потом ещё контекст карбона прикрутить, где бы только мак достать :D, если руки дойдут.

Да прибудет с вами сила духа и отладчика :D!!!
Последний раз редактировалось Slavikk 16.08.2007 17:31:49, всего редактировалось 1 раз.
Аватара пользователя
Slavikk
постоялец
 
Сообщения: 208
Зарегистрирован: 15.01.2007 22:34:52
Откуда: Из лесов...

Сообщение SovNarKom » 13.08.2007 02:35:14

Slavikk...
А ведь это статья... :) Почти...

Как думаешь, сможешь осуществить написание полноценной статьи? Я думаю, что это могло бы быть для многих интересно. Хотя я и не являюсь сторонником такого рода компонентов, но в некоторых случаях это удобнее, чем работать с OpenGL вручную.

Кстати, я давно уже не использовал OpenGL, почти год не слежу за развитием... и вот у меня к тебе вопрос:
Актуальны ли заголовки, идущие с FPC?
SovNarKom
постоялец
 
Сообщения: 389
Зарегистрирован: 28.05.2005 10:37:39
Откуда: Воронеж [vrn] [36]

Сообщение Slavikk » 13.08.2007 09:00:01

Заголовки OpenGL, идущие с FPC неактуальны :D - нет поддержки OpenGL3 :D . Правда он ещё не вышел :D . Самый последний заголовок можно взять с сайта - http://www.delphigl.com/ или прямая ссылка - http://files.delphigl.com/download/dglOpenGL.zip. Правда его нужно будет переименовать с dglOpenGL на Gl (как в имени, так и в unit). У меня ноутбук, так что пока выше 1.4 - мне не надо (2.1 -последний).

Статью напишу, но в пределах месяца - двух. Пытаюсь сделать гонки, ради интереса. Буду писать только как закончу. Иначе нет смысла писать толь об установке - это и на http://glscene.ru/ есть.

Насчёт компонентов - начинал с GLScene, бросил, начитался умной литературы, реализовал костяк своего движка, сравнил с GLScene и пришёл к выводу - похоже. После оценки ресурсов и затрат - решил дальше просто проинспектировать код модулей GLScene, которые буду использовать (80% кода написано до нас :D - так зачем переписывать, когда можно адаптировать). Но пока всё дело времени :D .
Последний раз редактировалось Slavikk 16.08.2007 17:32:08, всего редактировалось 1 раз.
Аватара пользователя
Slavikk
постоялец
 
Сообщения: 208
Зарегистрирован: 15.01.2007 22:34:52
Откуда: Из лесов...

Сообщение Slavikk » 15.08.2007 10:06:45

Чтобы не появлялась ошибка при выставлении свойства Camera у GLSceneViewer, изменим перед выставлением свойства Position у GLCamera.

На данный момент существует небольшой баг – если проект был создан ранее и камера в “GLScene Editor” находится в разделе “Scene objects”, а не в “Cameras” – при попытки открыть такой проект Lazarus завершит работу. Что бы открыть такой проект, откроем в блокноте файл unit1.lfm (если клавный модуль вашей программы называется - unit1.pas) и удаляем все блоки с упоминанием камеры.Например блок:
Код: Выделить всё
object GLCamera1: TGLCamera
  DepthOfView = 200
  FocalLength = 50
end


Далее создадим камеру динамически при создании главной формы и настроим в соответствии со старыми настройками которые вы записали при их удалении из unit1.lfm
Последний раз редактировалось Slavikk 16.08.2007 17:31:08, всего редактировалось 1 раз.
Аватара пользователя
Slavikk
постоялец
 
Сообщения: 208
Зарегистрирован: 15.01.2007 22:34:52
Откуда: Из лесов...

Сообщение Slavikk » 16.08.2007 14:21:16

Там примеров хватает - так, что надобности в статье не вижу. Я просто при программировании графических приложений - смотрю как сделано в GLScene и подобным образом реализую в своей программе.
Последний раз редактировалось Slavikk 20.08.2007 15:31:33, всего редактировалось 2 раз(а).
Аватара пользователя
Slavikk
постоялец
 
Сообщения: 208
Зарегистрирован: 15.01.2007 22:34:52
Откуда: Из лесов...

Сообщение Slavikk » 16.08.2007 17:22:32

Небольшой баг связанный с переводом GLScene для Lazarus на LCL, связан с невозможностью определения у GLSceneViewer – процедуры OnMouseMove. Данная проблема решается следующим образом – открывается файл unit1.lfm (если у вас главный модуль проекта unit1.pas), ищется блок - GLSceneViewer1 и в блок вставляется строка: “ OnMouseMove = GLSceneViewer1MouseMove ”.

Код: Выделить всё
object GLSceneViewer1: TGLSceneViewer
  Height = 310
  OnMouseMove = GLSceneViewer1MouseMove
end


После этого в файле проекта в разделе объявления класса запишем:
Код: Выделить всё
procedure GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState;  X, Y: Integer);


В тексте модуля опишем процедуру:

Код: Выделить всё
procedure TForm1.GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
  //  Действие
end;


После компиляции – можно увидеть, что процедура обработки перемещения мыши успешно работает (если вместо – “// Действие”, вставить код).
Аватара пользователя
Slavikk
постоялец
 
Сообщения: 208
Зарегистрирован: 15.01.2007 22:34:52
Откуда: Из лесов...

Сообщение Slavikk » 17.08.2007 12:03:27

:!: Баг с камерой (проект не открывается) - решение второе.

Удаляем камеру в unit1.lfm, как написано выше. Далее визуально создаём в проекте камеру (в “GLScene Editor” в разделе “Cameras”) и настраиваем её в соответствии со старыми настройками которые вы записали при их удалении из unit1.lfm. Сохраняем проект и закрываем Lazarus. Открываем unit1.lfm и переносим блок камеры в нужное вам место (например в нутр блока Дам-Куба), сохраняемся. Открываем проект в Lazarus - вуаля всё работает как прежде и камера там где надо.

:idea: На последок, перед удалением камеры из unit1.lfm - можно просто скопировать её настройки в текстовый файл, далее создать камеру в Lazarus, открыть unit1.lfm и перенести камеру в нужный вам блок, подставив настройки из текстового файла (преведущей камеры).

:wink:
Аватара пользователя
Slavikk
постоялец
 
Сообщения: 208
Зарегистрирован: 15.01.2007 22:34:52
Откуда: Из лесов...

Сообщение Slavikk » 21.08.2007 16:32:08

:!: Баг с TerrainRender.

Пытаюсь сделать "землю из текстуры", но геометрия получившейся земли не соответствует текстуре (какой должна быть геометрия). Не знаете как это обойти?

В остальном - сделал "кривую" землю с багом, камеру от 1 и 3 лица, небо, воду, тени, расставил объекты, научил главного героя стрелять под музыку. После того как доделаю противников - опишу всё в статье - может кому нибудь понадобится.
Аватара пользователя
Slavikk
постоялец
 
Сообщения: 208
Зарегистрирован: 15.01.2007 22:34:52
Откуда: Из лесов...

Сообщение Slavikk » 08.10.2007 12:56:05

Жду выхода Lazarus 0.9.24 и стабильной версии GLScene. Тогда можно будет думать и про маленькую статью. Пока, что GLScene годен только для вывода графиков в программе.
Аватара пользователя
Slavikk
постоялец
 
Сообщения: 208
Зарегистрирован: 15.01.2007 22:34:52
Откуда: Из лесов...

Сообщение Slavikk » 11.10.2007 17:35:32

1000 просмотров, порадовало :)

На данный момент откатился к версии GLScene 0.9.1.6 в редакции от http://www.skinhat.com/lazarus/ Земля рендерится без ошибок :)

Поискал игровые движки (GPL), но ничего стоящего кроме огра не нашёл. С++ не люблю, о GLScene 2 ничего неслышно, так что если к марту не выйдет Lazarus 0.9.24 и стабильной версии GLScene, буду работать над ответвлением от GLScene 0.9.1.6 и скорее под именем "Ирбис".

Пойду учить медведей программировать :D
Аватара пользователя
Slavikk
постоялец
 
Сообщения: 208
Зарегистрирован: 15.01.2007 22:34:52
Откуда: Из лесов...

Сообщение Снег Север » 27.11.2007 16:23:35

Поставил glscene-1.0.0.2 в Lazarus-0.9.24 fpc-2.2.0
Скомпилировал и запустил демку Megaglasscube - FPS 64...
Та же демка, скомпилированная под Делфи 2006, показывает FPS 178.

Я, конечно, ожидал, что под Лазарем будет несколько медленнее, но не в три раза! Похоже. что переходить с Делфи на "опенсоурс" у меня не выйдет, а жаль...
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3039
Зарегистрирован: 27.11.2007 16:14:47

Сообщение Slavikk » 29.11.2007 18:30:34

А ты ключи оптимизации ставил? У тебя они скорее всего не выставленные, и поэтому у тебя по умолчанию код собран как и под пентиум 1 так и под пентиум 4 без оптимизации. А если выставишь под пентиум 4 - то будет быстрее. И ещё отчасти glscene под Lazarus ещё не совсем корректно портирован.
Аватара пользователя
Slavikk
постоялец
 
Сообщения: 208
Зарегистрирован: 15.01.2007 22:34:52
Откуда: Из лесов...

Сообщение Slavikk » 03.12.2007 00:50:03

Megaglasscube:
lazarus 0.24 - FPS 64
Delphi2006 (2 патча + хотфикс) - FPS 57
Селерон 1.6, Видео Интел 915.
Аватара пользователя
Slavikk
постоялец
 
Сообщения: 208
Зарегистрирован: 15.01.2007 22:34:52
Откуда: Из лесов...

Сообщение Снег Север » 05.12.2007 19:28:12

Slavikk писал(а):А ты ключи оптимизации ставил? У тебя они скорее всего не выставленные, и поэтому у тебя по умолчанию код собран как и под пентиум 1 так и под пентиум 4 без оптимизации. А если выставишь под пентиум 4 - то будет быстрее. И ещё отчасти glscene под Lazarus ещё не совсем корректно портирован.


Меня пока волнует производительность, в первую очередь.

Выставил все оптимизации по максимуму - кстати, для Р4 я таковой не нашел, вижу только Pentium Pro/Pentium II/C6x86/K6 (-Op3) - FPS поменялся незначительно.

Может я не там смотрю? - я в Лазарусе ньюб..., вот в Делфи я могу всё :lol:

У меня Р4 3ГГц, 1 Гб ОЗУ, Радеон Х300.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3039
Зарегистрирован: 27.11.2007 16:14:47

След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 56

Рейтинг@Mail.ru
cron