Внимание! Используется
Lazarus
1.0.8 под управлением Fedora
19 Linux.
В первую очередь
нам необходимо скачать, и установить
библиотеку ZenGL.
Скачать библиотеку можно с официального
сайта в разделе Download
(http://zengl.org/download.html).
На момент написания статьи доступна
версия 0.3.11. Нам необходимо скачать файл
zengl-src-[номер
версии].7z.
Распакуйте данный архив в удобное для
вас место на жестком диске. Например, у
меня это каталог /home/[имя
пользователя]/lazarus/zengl/zengl-src-0.3.11.
Давайте посмотрим на содержимое каталога
zengl-src-0.3.11.
Из всех каталогов, которые нас интересуют,
это каталог extra
– содержит дополнительные модули,
headers
– содержит заголовочные модули, lib
– содержит объектные файлы различных
библиотек, src
– исходные файлы библиотеки ZenGL,
которые мы будем подключать к нашему
проекту.
Переходим к подключению библиотеки ZenGL к нашему проекту в среде Lazarus. В среде Lazarus создадим новый проект. Для этого выберем пункт меню File(Файл) -> New(Создать), откроется диалог создание нового проекта. В диалоге создания нового проекта выберите раздел Project(Проект) > Program(Программа) и нажмите кнопку Ok.
Сохраните проект, например в каталоге /home/[имя пользователя]/Projects/lazarus/zengl_p1. Для этого выберите пункт меню File(Файл) > Save As(Сохранить как). Присвойте проекту имя zengl_p1.lpi. Далее в свойствах проекта, пункт меню Project(Проект) > Project Options(Параметры проекта), выберите раздел Compiler Options(Параметры компилятора) > Paths(Пути). В поле Other unit files (-Fu)(Другие модули (-Fu)) нужно указать следующие пути до модулей ZenGL:
/home/[имя пользователя]/lazarus/zengl/zengl-src-0.3.11/headers/
/home/[имя
пользователя]/lazarus/zengl/zengl-src-0.3.11/extra/
/home/[имя
пользователя]/lazarus/zengl/zengl-src-0.3.11/src/
/home/[имя
пользователя]/lazarus/zengl/zengl-src-0.3.11/lib/zlib/$(TargetCPU)-$(TargetOS)/
/home/[имя
пользователя]/lazarus/zengl/zengl-src-0.3.11/lib/zip/$(TargetCPU)-$(TargetOS)/
/home/[имя
пользователя]/lazarus/zengl/zengl-src-0.3.11/lib/theora/$(TargetCPU)-$(TargetOS)/
/home/[имя
пользователя]/lazarus/zengl/zengl-src-0.3.11/lib/msvcrt/$(TargetCPU)/
/home/[имя
пользователя]/lazarus/zengl/zengl-src-0.3.11/lib/jpeg/$(TargetCPU)-$(TargetOS)/
/home/[имя
пользователя]/lazarus/zengl/zengl-src-0.3.11/lib/ogg/$(TargetCPU)-$(TargetOS)/
Рисунок
1. Подключение модулей
В поле Include
files (-Fi)(Включаемые
файлы (-Fi))
нужно указать следующие пути:
/home/[имя
пользователя]/lazarus/zengl/zengl-src-0.3.11/headers/
Рисунок 2. Подключение
заголовочных модулей
Теперь перейдем к
написанию кода. В только что созданном
новом проекте будет присутствовать
начальный код, который надо очистить и
оставить только следующий код:
program zengl_p1;
begin
end.
В коде, после названия
программы, напишем секцию uses
со следующими подключаемыми модулями:
uses
zgl_main, zgl_screen, zgl_window, zgl_timers, zgl_utils;
Ниже секции uses
напишем пять процедур – заглушек:
В данной процедуре
пишется код, который выполнится после
создания окна и создания контекста
OpenGL
procedure
Init;
begin
end;
Процедура, в которой
выполняется прорисовка экрана на каждой
итерации главного цикла
procedure
Draw;
begin
end;
Процедура, которая
выполняется каждый раз перед перерисовкой
экрана на каждой итерации главного
цикла.
procedure
Update( dt: Double );
begin
end;
Процедура, которая
выполняется каждый раз через установленный
интервал времени. В данном случае, каждую
секунду в заголовке окна будет меняться
значение FPS.
procedure
Timer;
begin
wnd_SetCaption( '01 -
Initialization[ FPS: ' + u_IntToStr( zgl_Get( RENDER_FPS ) ) + ' ]'
);
end;
Процедура, которая
выполняется перед очисткой ресурсов,
уничтожения окна и контекста OpenGL
procedure Quit;
begin
end;
Внутри главных
операторных скобок необходимо написать
следующий код:
Установка процедуры
таймера с именем Timer
с интервалом 1000 миллисекунд
timer_Add(
@Timer, 1000 );
Регистрация процедуры
Init
zgl_Reg( SYS_LOAD, @Init );
Регистрация процедуры
Draw
zgl_Reg( SYS_DRAW, @Draw );
Регистрация процедуры
Update
zgl_Reg( SYS_UPDATE, @Update );
Регистрация процедуры
Quit
zgl_Reg( SYS_EXIT, @Quit );
Первоначальное
значение заголовка окна
wnd_SetCaption( '01 -
Initialization' );
Отобразим курсор
wnd_ShowCursor( TRUE );
Установим опции
окна
scr_SetOptions( 800, 600,
REFRESH_MAXIMUM, FALSE, FALSE );
Инициализация
библиотеки ZenGL
zgl_Init();
Ниже показан результат
работы программы.
Рисунок 3. Результат
работы программы
Код полностью:
program zengl_p1; uses zgl_main, zgl_screen, zgl_window, zgl_timers, zgl_utils; procedure Init; begin end; procedure Draw; begin end; procedure Update( dt: Double ); begin end; procedure Timer; begin wnd_SetCaption( '01 - Initialization[ FPS: '
+ u_IntToStr( zgl_Get( RENDER_FPS ) ) + ' ]' ); end; procedure Quit; begin end; begin timer_Add( @Timer, 1000 ); zgl_Reg( SYS_LOAD, @Init ); zgl_Reg( SYS_DRAW, @Draw ); zgl_Reg( SYS_UPDATE, @Update ); zgl_Reg( SYS_EXIT, @Quit ); wnd_SetCaption( '01 - Initialization' ); wnd_ShowCursor( TRUE ); scr_SetOptions( 800, 600, REFRESH_MAXIMUM, FALSE, FALSE ); zgl_Init(); end.
syntax highlighted by Code2HTML, v. 0.9.1
Комментариев нет:
Отправить комментарий