Difference between revisions of "ZenGL Tutorial/ru"
(→Сборка) |
|||
Line 42: | Line 42: | ||
После, в директории "''src\''" вы можете увидеть файл "''ZenGL.dll''": скопируйте его в директорию "''bin\i386''" | После, в директории "''src\''" вы можете увидеть файл "''ZenGL.dll''": скопируйте его в директорию "''bin\i386''" | ||
− | При использовании динамической линковки, вам придется постоянно копировать DLL в | + | При использовании динамической линковки, вам придется постоянно копировать DLL в выходную директорию проекта. |
− | |||
== Первая программа == | == Первая программа == |
Revision as of 20:40, 30 May 2011
│
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":
<delphi>headers extra src src\Direct3D lib\jpeg\$(TargetCPU)-$(TargetOS) lib\msvcrt\$(TargetCPU) lib\ogg\$(TargetCPU)-$(TargetOS) lib\zlib\$(TargetCPU)-$(TargetOS)</delphi>
Сборка
Приложение можно собрать с ZenGL статически либо с использованием динамических библиотек (so/dll/dylib).
Подробнее можно прочесть на compilation in the ZenGL Wiki.
Статическая сборка: <delphi>{$DEFINE STATIC}</delphi> Сборка с использованием загружаемых библиотек: <delphi>//{$DEFINE STATIC}</delphi>
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), скопируйте необходимые библиотеки в директорию выполнения программы.
Добавьте ресурсы, назовите программу: <delphi>program demo01;
{$R *.res}</delphi>
Выберите режим компиляции, для использования so/dll/dylib): <delphi>{$DEFINE STATIC}</delphi>
Добавьте модули ZenGL. <delphi>uses
{$IFNDEF STATIC} zglHeader {$ELSE} zgl_main, zgl_screen, zgl_window, zgl_timers, zgl_utils {$ENDIF} ;</delphi>
Задаем переменные: <delphi> var
DirApp : String; DirHome : String;</delphi>
...Процедуры:: <delphi>procedure Init; begin
// Загрузка основных ресурсов
end;
procedure Draw; begin
// Рисуем то, что необходимо нам
end;
procedure Update( dt : Double ); begin
// Эта функция - лучший метод для реализации плавного движения
end;
procedure Timer; begin
// Caption will show the frames per second. wnd_SetCaption( '01 - Initialization[ FPS: ' + u_IntToStr( zgl_Get( RENDER_FPS ) ) + ' ]' );
end;
procedure Quit; begin
//
end;</delphi>
Here start the program: <delphi>Begin
{$IFNDEF STATIC} zglLoad( libZenGL ); {$ENDIF} // For loading/creating your own options/profiles/etc. you can get path to user home // directory, or to executable file(not works for GNU/Linux). DirApp := u_CopyStr( PChar( zgl_Get( DIRECTORY_APPLICATION ) ) ); DirHome := u_CopyStr( PChar( zgl_Get( DIRECTORY_HOME ) ) );
// Create a timer with interval 1000ms. timer_Add( @Timer, 1000 );
// Register the procedure, that will be executed after ZenGL initialization. zgl_Reg( SYS_LOAD, @Init ); // Register the render procedure. zgl_Reg( SYS_DRAW, @Draw ); // Register the procedure, that will get delta time between the frames. zgl_Reg( SYS_UPDATE, @Update ); // Register the procedure, that will be executed after ZenGL shutdown. zgl_Reg( SYS_EXIT, @Quit ); // Enable using of UTF-8, because this unit saved in UTF-8 encoding and here used // string variables. zgl_Enable( APP_USE_UTF8 );
// Set the caption of the window. wnd_SetCaption( '01 - Initialization' );
// Allow to show the mouse cursor. wnd_ShowCursor( TRUE );
// Set screen options. scr_SetOptions( 800, 600, REFRESH_MAXIMUM, FALSE, FALSE );
// Initialize ZenGL. zgl_Init();
End.</delphi>
Результат
Наш результат - шаблон для проектов ZenGL: <delphi>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.</delphi>