Difference between revisions of "ZenGL Tutorial/de"
m (english index) |
m (Fixed syntax highlighting; deleted category included in page template) |
||
(7 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
{{ZenGL Tutorial}} | {{ZenGL Tutorial}} | ||
− | {{ZenGL Tutorial Index}} | + | {{ZenGL Tutorial Index/de}} |
== Download == | == Download == | ||
Line 14: | Line 14: | ||
Dazu einfach Unter "''Projekt > Projekteinstellungen''" klicken. Dann unter "''Compilereinstellungen > Pfade'" bei "''Andere Units (-Fu)(Trenner ist der Strichpunkt):"' die folgenden Verzeichnisse hinzufügen: | Dazu einfach Unter "''Projekt > Projekteinstellungen''" klicken. Dann unter "''Compilereinstellungen > Pfade'" bei "''Andere Units (-Fu)(Trenner ist der Strichpunkt):"' die folgenden Verzeichnisse hinzufügen: | ||
− | < | + | <syntaxhighlight lang=text> |
+ | headers | ||
extra | extra | ||
src | src | ||
Line 21: | Line 22: | ||
lib\msvcrt\$(TargetCPU) | lib\msvcrt\$(TargetCPU) | ||
lib\ogg\$(TargetCPU)-$(TargetOS) | lib\ogg\$(TargetCPU)-$(TargetOS) | ||
− | lib\zlib\$(TargetCPU)-$(TargetOS)</ | + | lib\zlib\$(TargetCPU)-$(TargetOS)</syntaxhighlight> |
== Kompilieren== | == Kompilieren== | ||
Line 28: | Line 29: | ||
=== ZenGL statisch verwenden=== | === ZenGL statisch verwenden=== | ||
− | Die statische Verwendung hat den Vorteil, dass die Anwendung kleiner ist, man muss dann jedoch alle | + | Die statische Verwendung hat den Vorteil, dass die Anwendung kleiner ist, man muss dann jedoch alle notwendigen Units inkludieren. |
− | + | Darüber hinaus muss die Anwendung dann den Vorgaben der [[LGPL]]-Lizenz folgen. Das heisst, dass alle Teile einer Anwendung, die auf ZenGL-Code zurückgreifen, wiederum freigegeben werden müssen. | |
Die statische Verwendung von ZenGL erfolgt mittels | Die statische Verwendung von ZenGL erfolgt mittels | ||
− | < | + | <syntaxhighlight lang=pascal>{$DEFINE STATIC}</syntaxhighlight> |
im Quellcode. | im Quellcode. | ||
=== ZenGL mit so/dll/dylib verwenden === | === ZenGL mit so/dll/dylib verwenden === | ||
Wenn man ZenGL mit so/dll/dylib verwendet, ist es nicht notwendig, den Quellcode seines Programmes freizugeben. Um die Applikation dynamisch zu linken, muss man lediglich die Zeile | Wenn man ZenGL mit so/dll/dylib verwendet, ist es nicht notwendig, den Quellcode seines Programmes freizugeben. Um die Applikation dynamisch zu linken, muss man lediglich die Zeile | ||
− | < | + | <syntaxhighlight lang=pascal>{$DEFINE STATIC}</syntaxhighlight> auskommentieren. |
==== Windows DLL ==== | ==== Windows DLL ==== | ||
− | |||
Einfach "''src\Lazarus\ZenGL.lpi''" öffnen und mittels "''Start > Neu kompilieren (Strg + F9)''" die notwendige DLL erzeugen. Diese Datei mit Namen "''ZenGL.dll''" wird im Ordner "''src\''" erzeugt. Die Datei von Dort in den Ordner "''bin\i386''" kopieren, wo die Demoprogramme abgelegt sind. | Einfach "''src\Lazarus\ZenGL.lpi''" öffnen und mittels "''Start > Neu kompilieren (Strg + F9)''" die notwendige DLL erzeugen. Diese Datei mit Namen "''ZenGL.dll''" wird im Ordner "''src\''" erzeugt. Die Datei von Dort in den Ordner "''bin\i386''" kopieren, wo die Demoprogramme abgelegt sind. | ||
Nicht vergessen: Mann muss diese DLL Dateien immer mitgeben, wenn man sein Programm weitergibt! | Nicht vergessen: Mann muss diese DLL Dateien immer mitgeben, wenn man sein Programm weitergibt! | ||
Line 49: | Line 49: | ||
== Das erste Programm == | == Das erste Programm == | ||
− | |||
Dies ist das erste Progamm, welche mit ZenGL erstellt wird. Man erstellt in Lazarus ein neues Projekt vom Typ "Free Pascal Program". Danach fügt man die Pfade, wie oben beschrieben, dem Projekt hinzu. | Dies ist das erste Progamm, welche mit ZenGL erstellt wird. Man erstellt in Lazarus ein neues Projekt vom Typ "Free Pascal Program". Danach fügt man die Pfade, wie oben beschrieben, dem Projekt hinzu. | ||
Line 56: | Line 55: | ||
Programmtitel, hinzufügen von Ressourcen: | Programmtitel, hinzufügen von Ressourcen: | ||
− | < | + | <syntaxhighlight lang=pascal>program demo01; |
− | {$R *.res}</ | + | {$R *.res}</syntaxhighlight> |
Kompiliereinstellungen: | Kompiliereinstellungen: | ||
− | < | + | <syntaxhighlight lang=pascal>{$DEFINE STATIC}</syntaxhighlight> |
Hinzufügen der notwendigen ZenGL-Units: | Hinzufügen der notwendigen ZenGL-Units: | ||
− | < | + | <syntaxhighlight lang=pascal>uses |
{$IFNDEF STATIC} | {$IFNDEF STATIC} | ||
zglHeader | zglHeader | ||
Line 74: | Line 73: | ||
zgl_utils | zgl_utils | ||
{$ENDIF} | {$ENDIF} | ||
− | ;</ | + | ;</syntaxhighlight> |
Variablen, wie in einem standard Pascal-Programm: | Variablen, wie in einem standard Pascal-Programm: | ||
− | < | + | <syntaxhighlight lang=pascal> |
var | var | ||
DirApp : String; | DirApp : String; | ||
− | DirHome : String;</ | + | DirHome : String;</syntaxhighlight> |
Prozeduren: | Prozeduren: | ||
− | < | + | <syntaxhighlight lang=pascal>procedure Init; |
begin | begin | ||
// Hier die Ressourcen laden. | // Hier die Ressourcen laden. | ||
Line 107: | Line 106: | ||
begin | begin | ||
// | // | ||
− | end;</ | + | end;</syntaxhighlight> |
Hier startet das Programm: | Hier startet das Programm: | ||
− | < | + | <syntaxhighlight lang=pascal>Begin |
{$IFNDEF STATIC} | {$IFNDEF STATIC} | ||
zglLoad( libZenGL ); | zglLoad( libZenGL ); | ||
Line 143: | Line 142: | ||
//ZenGL initalisieren. | //ZenGL initalisieren. | ||
zgl_Init(); | zgl_Init(); | ||
− | End.</ | + | End.</syntaxhighlight> |
=== der fertige Code === | === der fertige Code === | ||
Das Ergebnis ist eine Vorlage für ZenGL-Projekte: | Das Ergebnis ist eine Vorlage für ZenGL-Projekte: | ||
− | < | + | <syntaxhighlight lang=pascal>program template; |
{$DEFINE STATIC} | {$DEFINE STATIC} | ||
Line 167: | Line 166: | ||
var | var | ||
− | DirApp | + | DirApp, DirHome : String; |
procedure Init; | procedure Init; | ||
Line 206: | Line 205: | ||
scr_SetOptions( 800, 600, REFRESH_MAXIMUM, FALSE, FALSE ); | scr_SetOptions( 800, 600, REFRESH_MAXIMUM, FALSE, FALSE ); | ||
zgl_Init(); | zgl_Init(); | ||
− | End.</ | + | End. |
− | + | </syntaxhighlight> | |
− | |||
− |
Latest revision as of 08:28, 3 March 2020
│
Deutsch (de) │
English (en) │
español (es) │
français (fr) │
русский (ru) │
ZenGL/de |
Tutorial 1 |
Tutorial 2 |
Tutorial 3 |
Edit
Download
ZenGL für Linux, Windows und Mac kann hier heruntergeladen werden: Download ZenGL.
Installation
Einfach die gepackte Datei mit einem "Zip-Programm" wie 7-7ip in einen beliebigen Ordner entpacken.
Pfade
Bevor man die einzelnen Module von ZenGL verwenden kann, müssen diese im Projekt zu den Pfaden der Units hinzugefügt werden.
Dazu einfach Unter "Projekt > Projekteinstellungen" klicken. Dann unter "Compilereinstellungen > Pfade'" bei "Andere Units (-Fu)(Trenner ist der Strichpunkt):"' die folgenden Verzeichnisse hinzufügen:
headers
extra
src
src\Direct3D
lib\jpeg\$(TargetCPU)-$(TargetOS)
lib\msvcrt\$(TargetCPU)
lib\ogg\$(TargetCPU)-$(TargetOS)
lib\zlib\$(TargetCPU)-$(TargetOS)
Kompilieren
Eine ZenGL Anwendung kann entweder statisch gelinkt werden, oder mittels so/dll/dylib. Mehr dazu im ZenGL-Wiki (englisch): compilation
ZenGL statisch verwenden
Die statische Verwendung hat den Vorteil, dass die Anwendung kleiner ist, man muss dann jedoch alle notwendigen Units inkludieren.
Darüber hinaus muss die Anwendung dann den Vorgaben der LGPL-Lizenz folgen. Das heisst, dass alle Teile einer Anwendung, die auf ZenGL-Code zurückgreifen, wiederum freigegeben werden müssen.
Die statische Verwendung von ZenGL erfolgt mittels
{$DEFINE STATIC}
im Quellcode.
ZenGL mit so/dll/dylib verwenden
Wenn man ZenGL mit so/dll/dylib verwendet, ist es nicht notwendig, den Quellcode seines Programmes freizugeben. Um die Applikation dynamisch zu linken, muss man lediglich die Zeile
{$DEFINE STATIC}
auskommentieren.
Windows DLL
Einfach "src\Lazarus\ZenGL.lpi" öffnen und mittels "Start > Neu kompilieren (Strg + F9)" die notwendige DLL erzeugen. Diese Datei mit Namen "ZenGL.dll" wird im Ordner "src\" erzeugt. Die Datei von Dort in den Ordner "bin\i386" kopieren, wo die Demoprogramme abgelegt sind. Nicht vergessen: Mann muss diese DLL Dateien immer mitgeben, wenn man sein Programm weitergibt!
Andere DLL-Dateien im "bin\"-Ordner, die man benutzt sind:chipmunk.dll ; libogg-0.dll ; libvorbis-0.dll ; libvorbis-3.dll
.
Das erste Programm
Dies ist das erste Progamm, welche mit ZenGL erstellt wird. Man erstellt in Lazarus ein neues Projekt vom Typ "Free Pascal Program". Danach fügt man die Pfade, wie oben beschrieben, dem Projekt hinzu.
Auch muss der Syntax Modus in Projekt > Projekteinstellungen > Compilereinstellungen > Parsen auf Delphi (-Mdelphi) umgestellt werden. Beim Verwenden der dynamischen Variante nicht vergessen, die jeweiligen Bibliotheken ins Ausgabeverzeichnis zu kopieren!
Programmtitel, hinzufügen von Ressourcen:
program demo01;
{$R *.res}
Kompiliereinstellungen:
{$DEFINE STATIC}
Hinzufügen der notwendigen ZenGL-Units:
uses
{$IFNDEF STATIC}
zglHeader
{$ELSE}
zgl_main,
zgl_screen,
zgl_window,
zgl_timers,
zgl_utils
{$ENDIF}
;
Variablen, wie in einem standard Pascal-Programm:
var
DirApp : String;
DirHome : String;
Prozeduren:
procedure Init;
begin
// Hier die Ressourcen laden.
end;
procedure Draw;
begin
// Malen.
end;
procedure Update( dt : Double );
begin
// Diese Procedure ist der beste Weg, um weiche Bewegung zu implementieren.
end;
procedure Timer;
begin
// Caption zeigt die Frames pro Sekunde an:
wnd_SetCaption( '01 - Initialization[ FPS: ' + u_IntToStr( zgl_Get( RENDER_FPS ) ) + ' ]' );
end;
procedure Quit;
begin
//
end;
Hier startet das Programm:
Begin
{$IFNDEF STATIC}
zglLoad( libZenGL );
{$ENDIF}
DirApp := u_CopyStr( PChar( zgl_Get( DIRECTORY_APPLICATION ) ) );
DirHome := u_CopyStr( PChar( zgl_Get( DIRECTORY_HOME ) ) );
// Erzeugen eines Timers mit Intervall 1000ms.
timer_Add( @Timer, 1000 );
// Registrieren der Prozedur die bei der ZengGL-Initialisierung ausgeführt wird.
zgl_Reg( SYS_LOAD, @Init );
// Registrieren der Render-Prozedur.
zgl_Reg( SYS_DRAW, @Draw );
// Registrieren der Update-Prozedur.
zgl_Reg( SYS_UPDATE, @Update );
// Registrieren der Quit-Prozedure (wird beim Schließen der Anwendung ausgeführt).
zgl_Reg( SYS_EXIT, @Quit );
// UTF-8-Unterstützung einschalten.
zgl_Enable( APP_USE_UTF8 );
// Fenstertitel festlegen.
wnd_SetCaption( '01 - Initialization' );
// Mauszeiger anzeigen:
wnd_ShowCursor( TRUE );
// Optionen für den "Screen" festlegen.
scr_SetOptions( 800, 600, REFRESH_MAXIMUM, FALSE, FALSE );
//ZenGL initalisieren.
zgl_Init();
End.
der fertige Code
Das Ergebnis ist eine Vorlage für ZenGL-Projekte:
program template;
{$DEFINE STATIC}
{$R *.res}
uses
{$IFNDEF STATIC}
zglHeader
{$ELSE}
zgl_main,
zgl_screen,
zgl_window,
zgl_timers,
zgl_utils
{$ENDIF}
;
var
DirApp, 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.