Sign in Join
Wiki copytemporary

ZenGL Tutorial/de: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: ZenGL Tutorial/de

OldNewLine
1+## Download
2+
3+[[ZenGL]] für Linux, Windows und Mac kann hier heruntergeladen werden: [Download ZenGL](http://zengl.org/download.html).
4+
5+## Installation
6+
7+Einfach die gepackte Datei mit einem "Zip-Programm" wie 7-7ip in einen beliebigen Ordner entpacken.
8+
9+### Pfade
10+
11+Bevor man die einzelnen Module von ZenGL verwenden kann, müssen diese im Projekt zu den Pfaden der Units hinzugefügt werden.
12+
13+Dazu einfach Unter "*Projekt \> Projekteinstellungen*" klicken. Dann unter "*Compilereinstellungen \> Pfade'" bei "*Andere Units (-Fu)(Trenner ist der Strichpunkt):"' die folgenden Verzeichnisse hinzufügen:
14+
15+```text
16+headers
17+extra
18+src
19+src\Direct3D
20+lib\jpeg\$(TargetCPU)-$(TargetOS)
21+lib\msvcrt\$(TargetCPU)
22+lib\ogg\$(TargetCPU)-$(TargetOS)
23+lib\zlib\$(TargetCPU)-$(TargetOS)
24+```
25+
26+## Kompilieren
27+
28+Eine ZenGL Anwendung kann entweder statisch gelinkt werden, oder mittels so/dll/dylib. Mehr dazu im ZenGL-Wiki (englisch): [compilation](http://zengl.org/wiki/doku.php?id=compilation)
29+
30+### ZenGL statisch verwenden
31+
32+Die statische Verwendung hat den Vorteil, dass die Anwendung kleiner ist, man muss dann jedoch alle notwendigen Units inkludieren.
33+
34+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.
35+
36+Die statische Verwendung von ZenGL erfolgt mittels
37+
38+``` pascal
39+{$DEFINE STATIC}
40+```
41+
42+im Quellcode.
43+
44+### ZenGL mit so/dll/dylib verwenden
45+
46+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
47+
48+``` pascal
49+{$DEFINE STATIC}
50+```
51+
52+auskommentieren.
53+
54+#### Windows DLL
55+
56+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!
57+
58+Andere DLL-Dateien im "*bin\*"-Ordner, die man benutzt sind:`chipmunk.dll ; libogg-0.dll ; libvorbis-0.dll ; libvorbis-3.dll`.
59+
60+## Das erste Programm
61+
62+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.
63+
64+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!
65+
66+Programmtitel, hinzufügen von Ressourcen:
67+
68+``` pascal
69+program demo01;
70+
71+{$R *.res}
72+```
73+
74+Kompiliereinstellungen:
75+
76+``` pascal
77+{$DEFINE STATIC}
78+```
79+
80+Hinzufügen der notwendigen ZenGL-Units:
81+
82+``` pascal
83+uses
84+ {$IFNDEF STATIC}
85+ zglHeader
86+ {$ELSE}
87+ zgl_main,
88+ zgl_screen,
89+ zgl_window,
90+ zgl_timers,
91+ zgl_utils
92+ {$ENDIF}
93+ ;
94+```
95+
96+Variablen, wie in einem standard Pascal-Programm:
97+
98+``` pascal
99+var
100+ DirApp : String;
101+ DirHome : String;
102+```
103+
104+Prozeduren:
105+
106+``` pascal
107+procedure Init;
108+begin
109+ // Hier die Ressourcen laden.
110+end;
111+
112+procedure Draw;
113+begin
114+ // Malen.
115+end;
116+
117+procedure Update( dt : Double );
118+begin
119+ // Diese Procedure ist der beste Weg, um weiche Bewegung zu implementieren.
120+end;
121+
122+procedure Timer;
123+begin
124+ // Caption zeigt die Frames pro Sekunde an:
125+ wnd_SetCaption( '01 - Initialization[ FPS: ' + u_IntToStr( zgl_Get( RENDER_FPS ) ) + ' ]' );
126+end;
127+
128+procedure Quit;
129+begin
130+ //
131+end;
132+```
133+
134+Hier startet das Programm:
135+
136+``` pascal
137+Begin
138+ {$IFNDEF STATIC}
139+ zglLoad( libZenGL );
140+ {$ENDIF}
141+ DirApp := u_CopyStr( PChar( zgl_Get( DIRECTORY_APPLICATION ) ) );
142+ DirHome := u_CopyStr( PChar( zgl_Get( DIRECTORY_HOME ) ) );
143+
144+ // Erzeugen eines Timers mit Intervall 1000ms.
145+ timer_Add( @Timer, 1000 );
146+
147+ // Registrieren der Prozedur die bei der ZengGL-Initialisierung ausgeführt wird.
148+ zgl_Reg( SYS_LOAD, @Init );
149+ // Registrieren der Render-Prozedur.
150+ zgl_Reg( SYS_DRAW, @Draw );
151+ // Registrieren der Update-Prozedur.
152+ zgl_Reg( SYS_UPDATE, @Update );
153+ // Registrieren der Quit-Prozedure (wird beim Schließen der Anwendung ausgeführt).
154+ zgl_Reg( SYS_EXIT, @Quit );
155+
156+ // UTF-8-Unterstützung einschalten.
157+ zgl_Enable( APP_USE_UTF8 );
158+
159+ // Fenstertitel festlegen.
160+ wnd_SetCaption( '01 - Initialization' );
161+
162+ // Mauszeiger anzeigen:
163+ wnd_ShowCursor( TRUE );
164+
165+ // Optionen für den "Screen" festlegen.
166+ scr_SetOptions( 800, 600, REFRESH_MAXIMUM, FALSE, FALSE );
167+
168+ //ZenGL initalisieren.
169+ zgl_Init();
170+End.
171+```
172+
173+### der fertige Code
174+
175+Das Ergebnis ist eine Vorlage für ZenGL-Projekte:
176+
177+``` pascal
178+program template;
179+
180+{$DEFINE STATIC}
181+
182+{$R *.res}
183+
184+uses
185+ {$IFNDEF STATIC}
186+ zglHeader
187+ {$ELSE}
188+ zgl_main,
189+ zgl_screen,
190+ zgl_window,
191+ zgl_timers,
192+ zgl_utils
193+ {$ENDIF}
194+ ;
195+
196+var
197+ DirApp, DirHome : String;
198+
199+procedure Init;
200+begin
201+end;
202+
203+procedure Draw;
204+begin
205+end;
206+
207+procedure Update( dt : Double );
208+begin
209+end;
210+
211+procedure Timer;
212+begin
213+ wnd_SetCaption( '01 - Initialization[ FPS: ' + u_IntToStr( zgl_Get( RENDER_FPS ) ) + ' ]' );
214+end;
215+
216+procedure Quit;
217+begin
218+end;
219+
220+Begin
221+ {$IFNDEF STATIC}
222+ zglLoad( libZenGL );
223+ {$ENDIF}
224+ DirApp := u_CopyStr( PChar( zgl_Get( DIRECTORY_APPLICATION ) ) );
225+ DirHome := u_CopyStr( PChar( zgl_Get( DIRECTORY_HOME ) ) );
226+ timer_Add( @Timer, 1000 );
227+ zgl_Reg( SYS_LOAD, @Init );
228+ zgl_Reg( SYS_DRAW, @Draw );
229+ zgl_Reg( SYS_UPDATE, @Update );
230+ zgl_Reg( SYS_EXIT, @Quit );
231+ zgl_Enable( APP_USE_UTF8 );
232+ wnd_SetCaption( '01 - Initialization' );
233+ wnd_ShowCursor( TRUE );
234+ scr_SetOptions( 800, 600, REFRESH_MAXIMUM, FALSE, FALSE );
235+ zgl_Init();
236+End.
237+```
238+
239+---
240+*From the Free Pascal wiki, page "ZenGL Tutorial/de", as it stood on 2020-03-03 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history