Lazarus und OpenGL für Anfänger

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...

Re: Lazarus und OpenGL für Anfänger

Beitragvon corpsman » 20. Feb 2011, 21:10 Re: Lazarus und OpenGL für Anfänger

ErnstVolker hat geschrieben:Corpsman's Beispiel funktioniert :D

Ich musste lediglich "ugraphics, uvectormath" auskommentieren.

Volker


Danke für den Hinweis, ich nutze die Units zwar häufig, aber die haben in Clear_Engine nichts verloren. Hab das gleich mal auf meiner HP Korrigiert.
--
Just try it
corpsman
 
Beiträge: 1076
Registriert: 28. Feb 2009, 09:54
Wohnort: Stuttgart
OS, Lazarus, FPC: Linux Mint Mate, Lazarus SVN Trunk, FPC 3.0 | 
CPU-Target: 64Bit
Nach oben

Beitragvon MAC » 21. Feb 2011, 17:47 Re: Lazarus und OpenGL für Anfänger

lzuser hat geschrieben:
Code: Alles auswählen
sleep(5);
 Done:= false;


Bisher Lösung über Timer
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?


1. Application.ProcessMessages;
2. sleep weglassen, brauchst du sowieso nicht...
Code: Alles auswählen
Signatur := nil;
MAC
 
Beiträge: 770
Registriert: 21. Feb 2009, 14:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2) | 
CPU-Target: 32Bit
Nach oben

Beitragvon ErnstVolker » 22. Feb 2011, 11:26 Re: Lazarus und OpenGL für Anfänger

Hallo,

ich versuche gerade das Beispiel von Corpsman unter Linux an den Start zu bekommen.

Lazarus mosert dass TOpenGLControl nicht da wäre.

Installation des Package bringt beim compilieren oben bereits erwähnte Fehlermeldung:

/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

Weis jemand Rat?

Volker
ErnstVolker
 
Beiträge: 216
Registriert: 17. Feb 2009, 11:44
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z) | 
CPU-Target: xxBit
Nach oben

Beitragvon shokwave » 22. Feb 2011, 12:55 Re: Lazarus und OpenGL für Anfänger

ErnstVolker hat geschrieben:/usr/bin/ld: cannot find -lGL

Das bedeutet, das die Library "GL" nicht gefunden wurde( also libGL.so). Du musst also ein Paket installieren, welches die Datei enthält. (bei mir unter Ubuntu 10.10 gibt es das Paket libgl1-mesa-dev)
mfg Ingo
shokwave
 
Beiträge: 419
Registriert: 15. Nov 2007, 17:58
Wohnort: Rudolstadt
OS, Lazarus, FPC: Win10 (L 1.6 FPC 3.0.0) | 
CPU-Target: i386,x64
Nach oben

Beitragvon ErnstVolker » 23. Feb 2011, 00:09 Re: Lazarus und OpenGL für Anfänger

Danke shokwave!

libgl1-mesa-dev hat geholfen. Jetzt ist zumindest das TOpenGLControl installiert.

Sofern ich mich unter Linux dann an corpsman's Beispiel orientiere, erhalte ich ein leeres Fenster beim Ausführen.

Unter Window's funktioniert es. Es erscheint ein Fenster mit schwarzer Oberfläche und einer roten Linie.
Bei Linux nix, nur Fenster.

Was ist da falsch?

Parallel tüftel ich unter Windows und Linux mit OpenCV. Als IDE kommt CodeBlocks zum Einsatz. Nur ein einfaches Beispiel: Das Anzeigen eines Bildes.
Hier erstaunt mich, daß meine Lazarusprogramme auch unter Linux aus dem "Dateimanager" mit Doppelklick gestartet werden können, die C++ Programme nicht. Die laufen nur in der IDE.
Unter Windows kann ich auch durch Doppelklick starten. Transportiere ich die exe jedoch auf einen anderen Rechner, fehlen DLL's.
Bei Ubuntu habe ich die entsprechenden .so-Dateien in das Release-Verzeichnis kopiert, es tut sich nix, unter Windows -bei dll Weitergabe- schon.
Das scheint am dynamischen / statischen Linken zu liegen.
Wie unterscheidet man statisches/dynamisches Linken in Lazarus? Kann man in CodeBlocks angeben, dass Bibliotheken statisch gelinkt werden sollen?

Hat schon mal jemand OpenCV unter Lazarus genutzt?
Man könnte sich vermutlich die ganzen Header und cpp-Dateien mit h2pas Übersetzen und mit der Hand nacharbeiten. Aber wie bindet man die lib-Dateien entsprechend ein?
Hat sich jemand von Euch mal eine Liste mit den "wichtigsten" Unterschieden zwischen FPC und C++ oder C erstellt? Hilft vielleicht beim Nacharbeiten? War so ein Gedanke...

Danke nochmal an shokwave!!

Gruß

Volker
ErnstVolker
 
Beiträge: 216
Registriert: 17. Feb 2009, 11:44
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z) | 
CPU-Target: xxBit
Nach oben

Beitragvon carli » 23. Feb 2011, 09:01 Re: Lazarus und OpenGL für Anfänger

Hui, ne Menge Fragen.

Ich beantworte einfach mal, was ich weiß:

.so-Dateien in das EXE-Verzeichnis stecken geht nicht, (das wäre auch zu unsicher),
stattdessen sollten sie nach /usr/lib oder /usr/local/lib schieben. Am besten gibt man einfach Paket-Abhängigkeiten an und steckt eigene .so-Dateien auch in Pakete. (oder .tar, das nach / entpackt wird)

.a-Dateien werden statisch gelinkt,
.so/.dll-Dateien hingegen immer dynamisch.

Lazarus-Komponenten für OpenGL hab ich noch nie benutzt, ich nutz SDL und das geht.
Probier mal "glxgears" in der Linux-Konsole, damit du siehst, ob OpenGL überhaupt geht.
carli
 
Beiträge: 660
Registriert: 9. Jan 2010, 18:32
OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2 | 
CPU-Target: 64Bit
Nach oben

Beitragvon ErnstVolker » 22. Sep 2019, 22:44 Re: Lazarus und OpenGL für Anfänger

Guten Abend,

ich bin's mal wieder. Hatte mit den Bandscheiben Ärger und konnte nicht gut sitzen, deshalb kein Lazarus.

Ich beschäftige mich mal wieder mit OpenCV. Ich habe mir die Version 2.4.13.6 besorgt und dazu Beispiele für Lazarus. Das funktioniert auch soweit.

Man benötigt aber zum Ausführen des Programms einige opencv-Dll's.Die habe ich aus den Quellen heraus in den Programmordner kopiert, dann läuft's.

In den Quellen gibt es aber auch einen Unterordner mit *.lib-Dateien. Die haben gleiche Namen wie die DLL's. Sind wohl Bibliotheken (??? Vorstufen ??? für DLL's?).

Wenn das ausführbare Programm ohne die opencv-Dll's auskommen soll, muss man dann gegen diese Bibliotheken linken? Wenn ja, wie stellt man das in der IDE ein?

Vielen Dank für Eure Antworten

Volker
ErnstVolker
 
Beiträge: 216
Registriert: 17. Feb 2009, 11:44
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z) | 
CPU-Target: xxBit
Nach oben

Beitragvon Warf » 23. Sep 2019, 21:05 Re: Lazarus und OpenGL für Anfänger

ErnstVolker hat geschrieben:In den Quellen gibt es aber auch einen Unterordner mit *.lib-Dateien. Die haben gleiche Namen wie die DLL's. Sind wohl Bibliotheken (??? Vorstufen ??? für DLL's?).

.lib's sind statische Bibliotheken. Im gegensatz zu dynamischen Bibliotheken (dll's) werden diese im kompilierschritt in die Executeable gelinkt, und sind somit teil deines programms. DLL's hingegen sind shared libraries und müssen vorliegen um benutzt zu werden.

Statische bibliotheken haben den vorteil das man keine dll's braucht, dynamische bibliotheken haben aber auch ihre vorteile. Zum einen benötigst du den Code nur einmal, also 10 programme die die selbe DLL brauchen müssen nicht alle die DLL mitliefern (Geteilte DLL's liegen bei windows im system32 ordner). Unter Linux z.b. installieren programme Ihre abbhängigkeiten über einen Paketmanager, der stellt sicher das die libs nicht mehrfach mitgeliefert werden. Ein weiterer vorteil von DLL's ist das sie unabhängig vom programm sind. Wenn also z.B. eine Sicherheitslücke Publik werden sollte (z.B. du benutzt die OpenSSL) kannst du ganz einfach die Lib updaten mit den security fixes, ohne jede anwendung die diese Lib verwendet auch upzudaten. Und DLL's können dynamisch geladen werden.
Wenn du deine software nur für Windows kompilieren möchtest würde ich dir empfehlen bei statischen bibliotheken zu bleiben, unter Linux mit paketmanagern macht das grade für eine so häufig verwendete Bibliothek wie die OpenCV überhaupt keinen sinn, und da solltest du dann dynamische bibliotheken nehmen.

Außerdem, da kenn ich mich nicht so gut aus, könnte es sein das es Lizenzrechtlich einen Unterschied machen kann ob du dein dyn oder statische lib benutzt, das solltest du auf jedenfall auch vorher prüfen

Wenn das ausführbare Programm ohne die opencv-Dll's auskommen soll, muss man dann gegen diese Bibliotheken linken? Wenn ja, wie stellt man das in der IDE ein?

Mit der IDE hat das erst mal gar nix zu tun, sondern ist rein sache des Compilers. Der FPC unterstützt dafür die LinkLib direktive. Beispiel:
Code: Alles auswählen
unit libtest;
 
{$MODE ObjFpc}{$H+}
 
interface
{$LINKLIB c}
 
function strlen(P: pchar): longint; cdecl; external;
 
implementation
 
end.

Dieser code linkt (statisch) die LibC in den code, und stellt die funktion strlen aus dieser bereit.
Für dein beispiel musst du den dateinamen in das LinkLib schreiben (statt dem c) und die strlen definition durch die signatur der funktionen in der Library austauschen. Dann sollte beim kompilieren der FPC sich um alles kümmern
Warf
 
Beiträge: 1213
Registriert: 23. Sep 2014, 17:46
Wohnort: Aachen
OS, Lazarus, FPC: Mac OSX 10.11 | Win 10 | FPC 3.0.0 | L trunk | 
CPU-Target: x86_64, i368, ARM
Nach oben

Beitragvon Mathias » 25. Sep 2019, 16:53 Re: Lazarus und OpenGL für Anfänger

Hier ist alles beschrieben, wie man Lazarus fit für OpenGL macht.

https://wiki.delphigl.com/index.php/Laz ... einrichten

Hier das komplette Tutorial:
https://wiki.delphigl.com/index.php/Laz ... 3_Tutorial
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4347
Registriert: 2. Jan 2014, 18:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon fliegermichl » 26. Sep 2019, 08:52 Re: Lazarus und OpenGL für Anfänger

Oder das Package GLScene verwenden. Da sind tonnenweise Demos drin. Auf meine Bitte hin hat der Betreuer vom Online Package Manager das mit aufgenommen.
fliegermichl
Lazarusforum e. V.
 
Beiträge: 395
Registriert: 9. Jun 2011, 09:42

Beitragvon Mathias » 26. Sep 2019, 18:13 Re: Lazarus und OpenGL für Anfänger

Ich würde LazOpenGLContext x.x.x verwenden, da dies bei Lazarus dabei ist.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4347
Registriert: 2. Jan 2014, 18:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

• Themenende •
Vorherige

Zurück zu Multimedia



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried