Lazarus und OpenGL für Anfänger
-
- Beiträge: 97
- Registriert: Sa 20. Jun 2009, 16:00
- OS, Lazarus, FPC: Win10 20H2, Laz 2.0.8 auch Linux Mint Mate 20, Laz 2.0.6
- CPU-Target: 64Bit
Lazarus und OpenGL für Anfänger
Ich möchte in Lazarus auf einem Formular in ein Rechteck (z.B. Panel ?)
eine Grafik mit OpenGL-Unterstützung anlegen.
Das bei Lazarus mitgelieferte Beispiel lässt sich einwandfrei übersetzen.
Das ist mir aber für den Einsteig zu kompliziert.
Im OpenGL-Tutorial scheitere ich schon bei der Umsetzung des ersten Beispiels
in ein lauffähiges Programm mit einem Formular.
Auf der Sourceforge-Lazarus-CCR-Page gibt es die Quelltexte nicht mehr.
Ich würde mich über ein wenig einfachsten Quelltext mit ein paar
Erläuterungen als Einstieg freuen.
Oder: Wie sollte ich vorgehen?
Vielen Dank für alle Vorschläge.
eine Grafik mit OpenGL-Unterstützung anlegen.
Das bei Lazarus mitgelieferte Beispiel lässt sich einwandfrei übersetzen.
Das ist mir aber für den Einsteig zu kompliziert.
Im OpenGL-Tutorial scheitere ich schon bei der Umsetzung des ersten Beispiels
in ein lauffähiges Programm mit einem Formular.
Auf der Sourceforge-Lazarus-CCR-Page gibt es die Quelltexte nicht mehr.
Ich würde mich über ein wenig einfachsten Quelltext mit ein paar
Erläuterungen als Einstieg freuen.
Oder: Wie sollte ich vorgehen?
Vielen Dank für alle Vorschläge.
-
- Beiträge: 657
- Registriert: Sa 9. Jan 2010, 17:32
- OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
- CPU-Target: 64Bit
Re: Lazarus und OpenGL für Anfänger
http://wiki.delphigl.com/index.php/Tutorial" onclick="window.open(this.href);return false;
-
- Beiträge: 770
- Registriert: Sa 21. Feb 2009, 13:46
- OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
- CPU-Target: 32Bit
Re: Lazarus und OpenGL für Anfänger
erinnert mich mal nen paar einstiegs-quellcode zu verfassen wenn ich zeit hab 
aber sonst kann ich nur wie carli dgl empfehlen. Hab mir da auch ziemlich viel beigebracht...

aber sonst kann ich nur wie carli dgl empfehlen. Hab mir da auch ziemlich viel beigebracht...
Code: Alles auswählen
Signatur := nil;
- corpsman
- Lazarusforum e. V.
- Beiträge: 1629
- Registriert: Sa 28. Feb 2009, 08:54
- OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
- CPU-Target: 64Bit
- Wohnort: Stuttgart
- Kontaktdaten:
Re: Lazarus und OpenGL für Anfänger
guckst du Hier findest du meine Samples zu diesem Thema.
--
Just try it
Just try it
-
- Beiträge: 353
- Registriert: Di 17. Feb 2009, 10:44
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Lazarus und OpenGL für Anfänger
Hier muß ich auch mal nachfragen:
Die "DGLOpenGL.pas" habe ich mir runtergeladen und in Delphi eingebunden. Das Beispiel aus dem ersten Tutorial habe ich zum Einstieg
rüberkopiert (es war spät und sollt schnell gehen...) und es läuft auch unter Delphi 7.
Dann von Delphi nach Lazarus, aber es funktionierte nicht. Und unter Linux (Ubuntu 10.10) auch nicht. Ich habe momentan nicht den Rechner und die Zeit die Fehlermeldungen
genauer aufzulisten.
Deshalb meine Frage: Wie binde ich die dglOpenGL richtig in Lazarus ein? Muss ich sie vorher von Delphi nach Lazarus umwandeln oder muss ich die Compilerschalter abändern, oder beides?
MfG
Volker
Die "DGLOpenGL.pas" habe ich mir runtergeladen und in Delphi eingebunden. Das Beispiel aus dem ersten Tutorial habe ich zum Einstieg
rüberkopiert (es war spät und sollt schnell gehen...) und es läuft auch unter Delphi 7.
Dann von Delphi nach Lazarus, aber es funktionierte nicht. Und unter Linux (Ubuntu 10.10) auch nicht. Ich habe momentan nicht den Rechner und die Zeit die Fehlermeldungen
genauer aufzulisten.
Deshalb meine Frage: Wie binde ich die dglOpenGL richtig in Lazarus ein? Muss ich sie vorher von Delphi nach Lazarus umwandeln oder muss ich die Compilerschalter abändern, oder beides?
MfG
Volker
- corpsman
- Lazarusforum e. V.
- Beiträge: 1629
- Registriert: Sa 28. Feb 2009, 08:54
- OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
- CPU-Target: 64Bit
- Wohnort: Stuttgart
- Kontaktdaten:
Re: Lazarus und OpenGL für Anfänger
Du musst unter Linux wie Windows Lazarus die TOpenGLControl Komponente installieren, dann DGLOpenGL.pas in das Verzeichnis in dem deine Anwendung liegt und z.b. das Sample von meiner HP (2 Posts weiter oben) rein kopieren und starten.
Fertig.
Aber egal wie, etwas Zeit solltest du dir schon nehmen..
Fertig.
Aber egal wie, etwas Zeit solltest du dir schon nehmen..
--
Just try it
Just try it
-
- Beiträge: 353
- Registriert: Di 17. Feb 2009, 10:44
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Lazarus und OpenGL für Anfänger
Hallo corpsman,
ich bin jetzt auf Linux und habe versucht "LazOpenGLContext 0.0.1" zu installieren. Ein TOpenGLControl finde ich nicht.
Da kommt beim IDE-Compilieren:
/usr/bin/ld: warning: /home/volker/.lazarus/bin/link.res contains output sections; did you forget -T?
/usr/bin/ld: cannot find -lGL
/usr/lib/lazarus/0.9.28.2/ide/lazarus.pp(129,1) Error: Error while linking
/usr/lib/lazarus/0.9.28.2/ide/lazarus.pp(129,1) Fatal: There were 1 errors compiling module, stopping
Da scheitert's schon mal...
Gruß
Volker
ich bin jetzt auf Linux und habe versucht "LazOpenGLContext 0.0.1" zu installieren. Ein TOpenGLControl finde ich nicht.
Da kommt beim IDE-Compilieren:
/usr/bin/ld: warning: /home/volker/.lazarus/bin/link.res contains output sections; did you forget -T?
/usr/bin/ld: cannot find -lGL
/usr/lib/lazarus/0.9.28.2/ide/lazarus.pp(129,1) Error: Error while linking
/usr/lib/lazarus/0.9.28.2/ide/lazarus.pp(129,1) Fatal: There were 1 errors compiling module, stopping
Da scheitert's schon mal...
Gruß
Volker
-
- Beiträge: 770
- Registriert: Sa 21. Feb 2009, 13:46
- OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
- CPU-Target: 32Bit
Re: Lazarus und OpenGL für Anfänger
also TOpenGLControl oder GLScene oder so sind nicht dafür notwendig.
man brauch einfach nur den Header. Der rest "vereinfacht" die arbeit nur (nehm ich mal an - hab es nicht getestet)
man brauch einfach nur den Header. Der rest "vereinfacht" die arbeit nur (nehm ich mal an - hab es nicht getestet)
Code: Alles auswählen
Signatur := nil;
-
- Beiträge: 97
- Registriert: Sa 20. Jun 2009, 16:00
- OS, Lazarus, FPC: Win10 20H2, Laz 2.0.8 auch Linux Mint Mate 20, Laz 2.0.6
- CPU-Target: 64Bit
Re: Lazarus und OpenGL für Anfänger
Ich habe dieses erste Tutorial-Beispiel mit Del6 umgesetzt und es lief sofort.ErnstVolker hat geschrieben:Hier muß ich auch mal nachfragen:
Die "DGLOpenGL.pas" habe ich mir runtergeladen und in Delphi eingebunden. Das Beispiel aus dem ersten Tutorial habe ich zum Einstieg rüberkopiert
Dabei habe ich nichts weiter installiert, nur die "DGLOpenGL.pas" in das Programmverzeichnis kopiert.
Dann habe ich das Beispiel nach Lazarus (0.9.28.2 beta-WinXP) kopiert. Auch dort läuft es, bis auf einen Typen-Fehler:
Warum kommt bei Lazarus (bei Del6 nicht) für die folgende Zeile
Code: Alles auswählen
StatusBar.Panels[1].Text:=gluErrorString(glGetError);
Incompatible types: got "<procedure variable type of function:DWord;StdCall>" expected "LongWord"
Was muss ich wo ändern, um diesen Typ-Fehler abzustellen?
Vielen Dank eure Hinweise,
vor allem auf die Tutorials!
-
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: Lazarus und OpenGL für Anfänger
Vermutlichlzuser hat geschrieben: StatusBar.Panels[1].Text:=gluErrorString(glGetError);
für "glGetError" die Fehlermeldung
Incompatible types: got "<procedure variable type of function:DWord;StdCall>" expected "LongWord"
Code: Alles auswählen
StatusBar.Panels[1].Text:=gluErrorString(glGetError());
-
- Beiträge: 353
- Registriert: Di 17. Feb 2009, 10:44
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Lazarus und OpenGL für Anfänger
Hallo,
das Problem mit glGetError hatte ich auch. ()-setzen hinter glGetError hat geholfen, DANKE mse!!
Jetzt habe ich noch das Problem mit:
Hier kommt die Meldung:
Das Beispiel (Tutorial 1) läuft unter Delphi 7 einwandfrei.
Hier die Form.Create Methode:
und hier "IdleHandler":
Was mache ich falsch?
Wo liegt hier der Unterschied zwischen Lazarus und Delphi?
Vielen Dank für einen Tipp!
Gruß
Volker
das Problem mit glGetError hatte ich auch. ()-setzen hinter glGetError hat geholfen, DANKE mse!!
Jetzt habe ich noch das Problem mit:
Code: Alles auswählen
Application.OnIdle := IdleHandler;
Code: Alles auswählen
unit1.pas(57,36) Error: Wrong number of parameters specified for call to "IdleHandler"
Code: Alles auswählen
type
{ TForm1 }
TForm1 = class(TForm)
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure IdleHandler(Sender: TObject; var Done: Boolean); //Hier die Definition des Prototypen
procedure Timer1Timer(Sender: TObject);
.
.
.
Code: Alles auswählen
procedure TForm1.FormCreate(Sender: TObject);
begin
DC:= GetDC(Handle);
if not InitOpenGL then Application.Terminate;
RC:= CreateRenderingContext( DC,
[opDoubleBuffered],
32,
24,
0,0,0,
0);
ActivateRenderingContext(DC, RC);
SetupGL;
Application.OnIdle := IdleHandler; //HIER SCHMECKT ES DEM COMPILER NICHT!!
end;
Code: Alles auswählen
procedure TForm1.IdleHandler(Sender: TObject; var Done: Boolean);
begin
StartTime:= GetTickCount;
Render;
DrawTime:= GetTickCount - StartTime;
Inc(TimeCount, DrawTime);
Inc(FrameCount);
if TimeCount >= 1000 then begin
Frames:= FrameCount;
TimeCount:= TimeCount - 1000;
FrameCount:= 0;
Caption:= InttoStr(Frames) + 'FPS';
ErrorHandler;
end;
sleep(5);
Done:= false;
end;
Wo liegt hier der Unterschied zwischen Lazarus und Delphi?
Vielen Dank für einen Tipp!
Gruß
Volker
-
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: Lazarus und OpenGL für Anfänger
FPC benötigt ein zusätzliches "@".ErnstVolker hat geschrieben: Wo liegt hier der Unterschied zwischen Lazarus und Delphi?
Code: Alles auswählen
Application.OnIdle := @IdleHandler;
-
- Beiträge: 353
- Registriert: Di 17. Feb 2009, 10:44
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Lazarus und OpenGL für Anfänger
Hallo,
danke für das "@" ! Hat geholfen zum compiliern. Aber es erscheint nur ein Graues Fenster.
Keinerlei Einfärbung, nix.
Gab's dieses Problem auch bei Anderen?
Ich werd' mal das Beispiel von corpsman probieren.
Volker
danke für das "@" ! Hat geholfen zum compiliern. Aber es erscheint nur ein Graues Fenster.
Keinerlei Einfärbung, nix.
Gab's dieses Problem auch bei Anderen?
Ich werd' mal das Beispiel von corpsman probieren.
Volker
-
- Beiträge: 353
- Registriert: Di 17. Feb 2009, 10:44
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Lazarus und OpenGL für Anfänger
Corpsman's Beispiel funktioniert
Ich musste lediglich "ugraphics, uvectormath" auskommentieren.
Danke Danke!!
Jetzt geht's an's Quelltextstudieren...
Volker

Ich musste lediglich "ugraphics, uvectormath" auskommentieren.
Danke Danke!!
Jetzt geht's an's Quelltextstudieren...
Volker
-
- Beiträge: 97
- Registriert: Sa 20. Jun 2009, 16:00
- OS, Lazarus, FPC: Win10 20H2, Laz 2.0.8 auch Linux Mint Mate 20, Laz 2.0.6
- CPU-Target: 64Bit
Re: Lazarus und OpenGL für Anfänger
Code: Alles auswählen
sleep(5);
Done:= false;
Jetzt Lösung über IdleHandler
Bei Lazarus und Delphi das gleiche kleine Problem:
Ich gebe Fehlermeldung und Framezahl jeweils in der StatusBar aus
(Bei der Ausgabe über die Caption genauso)
Sobald vor dem Done:=false
ein Sleep(...) steht, wird in der Statuszeile nichts angezeigt
Ohne Sleep(...) funktioniert es.
Irgend eine Idee?
Zuletzt geändert von Lori am So 20. Feb 2011, 19:14, insgesamt 1-mal geändert.
Grund: Highlighter
Grund: Highlighter