Difference between revisions of "ZenGL Tutorial/ru"
m (Text replace - "delphi>" to "syntaxhighlight>") |
|||
Line 17: | Line 17: | ||
Откройте "''Project > Project Options''". В "''Compiler Options > Paths''" добавьте путь к "''Other Unit Files''": | Откройте "''Project > Project Options''". В "''Compiler Options > Paths''" добавьте путь к "''Other Unit Files''": | ||
− | < | + | <syntaxhighlight>headers |
extra | extra | ||
src | src | ||
Line 24: | Line 24: | ||
lib\msvcrt\$(TargetCPU) | lib\msvcrt\$(TargetCPU) | ||
lib\ogg\$(TargetCPU)-$(TargetOS) | lib\ogg\$(TargetCPU)-$(TargetOS) | ||
− | lib\zlib\$(TargetCPU)-$(TargetOS)</ | + | lib\zlib\$(TargetCPU)-$(TargetOS)</syntaxhighlight> |
== Сборка == | == Сборка == | ||
Line 33: | Line 33: | ||
Статическая сборка: | Статическая сборка: | ||
− | < | + | <syntaxhighlight>{$DEFINE STATIC}</syntaxhighlight> |
Сборка с использованием загружаемых библиотек: | Сборка с использованием загружаемых библиотек: | ||
− | < | + | <syntaxhighlight>//{$DEFINE STATIC}</syntaxhighlight> |
==== Windows DLL ==== | ==== Windows DLL ==== | ||
Line 50: | Line 50: | ||
Добавьте ресурсы, назовите программу: | Добавьте ресурсы, назовите программу: | ||
− | < | + | <syntaxhighlight>program demo01; |
− | {$R *.res}</ | + | {$R *.res}</syntaxhighlight> |
Выберите режим компиляции, для использования so/dll/dylib: | Выберите режим компиляции, для использования so/dll/dylib: | ||
− | < | + | <syntaxhighlight>{$DEFINE STATIC}</syntaxhighlight> |
Добавьте модули ZenGL. | Добавьте модули ZenGL. | ||
− | < | + | <syntaxhighlight>uses |
{$IFNDEF STATIC} | {$IFNDEF STATIC} | ||
zglHeader | zglHeader | ||
Line 68: | Line 68: | ||
zgl_utils | zgl_utils | ||
{$ENDIF} | {$ENDIF} | ||
− | ;</ | + | ;</syntaxhighlight> |
Задаем переменные: | Задаем переменные: | ||
− | < | + | <syntaxhighlight> |
var | var | ||
DirApp : String; | DirApp : String; | ||
− | DirHome : String;</ | + | DirHome : String;</syntaxhighlight> |
...Процедуры:: | ...Процедуры:: | ||
− | < | + | <syntaxhighlight>procedure Init; |
begin | begin | ||
// Загрузка основных ресурсов | // Загрузка основных ресурсов | ||
Line 101: | Line 101: | ||
begin | begin | ||
// | // | ||
− | end;</ | + | end;</syntaxhighlight> |
Вот начало программы: | Вот начало программы: | ||
− | < | + | <syntaxhighlight>Begin |
{$IFNDEF STATIC} | {$IFNDEF STATIC} | ||
zglLoad( libZenGL ); | zglLoad( libZenGL ); | ||
Line 140: | Line 140: | ||
// Инициализируем ZenGL. | // Инициализируем ZenGL. | ||
zgl_Init(); | zgl_Init(); | ||
− | End.</ | + | End.</syntaxhighlight> |
=== Результат === | === Результат === | ||
Наш результат - ''шаблон'' для проектов ZenGL: | Наш результат - ''шаблон'' для проектов ZenGL: | ||
− | < | + | <syntaxhighlight>program template; |
{$DEFINE STATIC} | {$DEFINE STATIC} | ||
Line 203: | Line 203: | ||
scr_SetOptions( 800, 600, REFRESH_MAXIMUM, FALSE, FALSE ); | scr_SetOptions( 800, 600, REFRESH_MAXIMUM, FALSE, FALSE ); | ||
zgl_Init(); | zgl_Init(); | ||
− | End.</ | + | End.</syntaxhighlight> |
[[Category:Graphics/ru]] | [[Category:Graphics/ru]] |
Revision as of 16:14, 24 March 2012
│
Deutsch (de) │
English (en) │
español (es) │
français (fr) │
русский (ru) │
ZenGL/ru |
Tutorial 1 |
Tutorial 2 |
Tutorial 3 |
Edit
Скачать
ZenGL для Linux, Windows и Mac можно скачать тут.
Установка
Для инсталляции достаточно распаковать скачанный архив в удобную директорию.
Настройка путей
Перед использованием модулей не забудьте добавить в пути к исходным кодам путь к исходникам ZenGL
Откройте "Project > Project Options". В "Compiler Options > Paths" добавьте путь к "Other Unit Files":
headers
extra
src
src\Direct3D
lib\jpeg\$(TargetCPU)-$(TargetOS)
lib\msvcrt\$(TargetCPU)
lib\ogg\$(TargetCPU)-$(TargetOS)
lib\zlib\$(TargetCPU)-$(TargetOS)
Сборка
Приложение можно собрать с ZenGL статически либо с использованием динамических библиотек (so/dll/dylib).
Подробнее можно прочесть в compilation на ZenGL Wiki.
Статическая сборка:
{$DEFINE STATIC}
Сборка с использованием загружаемых библиотек:
//{$DEFINE STATIC}
Windows DLL
Откройте "src\Lazarus\ZenGL.lpi" а потом: "Run > Compile (Ctrl + F9)".
После, в директории "src\" вы можете увидеть файл "ZenGL.dll": скопируйте его в директорию "bin\i386" При использовании динамической линковки, вам придется постоянно копировать DLL в выходную директорию проекта.
Первая программа
Сперва, создайте новое приложение Free Pascal ("Free Pascal Program"), измените пути к исходным кодам, как было указано выше. Также, смените Syntax Mode в Project > Project Options > Compiler Options > Parsing на Delphi (-Mdelphi). Запомните: если вы используете динамическую линковку (so/dll/dylib), скопируйте необходимые библиотеки в директорию выполнения программы.
Добавьте ресурсы, назовите программу:
program demo01;
{$R *.res}
Выберите режим компиляции, для использования so/dll/dylib:
{$DEFINE STATIC}
Добавьте модули ZenGL.
uses
{$IFNDEF STATIC}
zglHeader
{$ELSE}
zgl_main,
zgl_screen,
zgl_window,
zgl_timers,
zgl_utils
{$ENDIF}
;
Задаем переменные:
var
DirApp : String;
DirHome : String;
...Процедуры::
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
{$IFNDEF STATIC}
zglLoad( libZenGL );
{$ENDIF}
// Для загрузки/создания каких-то своих настроек/профилей/etc. можно получить путь к
// домашенему каталогу пользователя, или к исполняемому файлу(не работает для GNU/Linux).
DirApp := u_CopyStr( PChar( zgl_Get( DIRECTORY_APPLICATION ) ) );
DirHome := u_CopyStr( PChar( zgl_Get( DIRECTORY_HOME ) ) );
// Создаем таймер с интервалом 1000мс.
timer_Add( @Timer, 1000 );
// Регистрируем процедуру, что выполнится сразу после инициализации ZenGL.
zgl_Reg( SYS_LOAD, @Init );
// Регистрируем процедуру, где будет происходить рендер.
zgl_Reg( SYS_DRAW, @Draw );
// Регистрируем процедуру, которая будет принимать разницу времени между кадрами.
zgl_Reg( SYS_UPDATE, @Update );
// Регистрируем процедуру, которая выполнится после завершения работы ZenGL.
zgl_Reg( SYS_EXIT, @Quit );
// Т.к. модуль сохранен в кодировке UTF-8 и в нем используются строковые переменные
// следует указать использование этой кодировки.
zgl_Enable( APP_USE_UTF8 );
// Устанавливаем заголовок окна.
wnd_SetCaption( '01 - Initialization' );
// Разрешаем курсор мыши.
wnd_ShowCursor( TRUE );
// Указываем первоначальные настройки.
scr_SetOptions( 800, 600, REFRESH_MAXIMUM, FALSE, FALSE );
// Инициализируем ZenGL.
zgl_Init();
End.
Результат
Наш результат - шаблон для проектов ZenGL:
program template;
{$DEFINE STATIC}
{$R *.res}
uses
{$IFNDEF STATIC}
zglHeader
{$ELSE}
zgl_main,
zgl_screen,
zgl_window,
zgl_timers,
zgl_utils
{$ENDIF}
;
var
DirApp : String; DirHome : String;
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
{$IFNDEF STATIC}
zglLoad( libZenGL );
{$ENDIF}
DirApp := u_CopyStr( PChar( zgl_Get( DIRECTORY_APPLICATION ) ) );
DirHome := u_CopyStr( PChar( zgl_Get( DIRECTORY_HOME ) ) );
timer_Add( @Timer, 1000 );
zgl_Reg( SYS_LOAD, @Init );
zgl_Reg( SYS_DRAW, @Draw );
zgl_Reg( SYS_UPDATE, @Update );
zgl_Reg( SYS_EXIT, @Quit );
zgl_Enable( APP_USE_UTF8 );
wnd_SetCaption( '01 - Initialization' );
wnd_ShowCursor( TRUE );
scr_SetOptions( 800, 600, REFRESH_MAXIMUM, FALSE, FALSE );
zgl_Init();
End.