Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 08:52

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: OpenGL mit Lazarus?
BeitragVerfasst: Mo Aug 08, 2011 10:19 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 11, 2009 08:02
Beiträge: 532
Programmiersprache: pascal (Delphi 7)
Hab gerade wieder versucht, OpenGL unter Lazarus zum Laufen zu bringen.
ok, man braucht da so ein TOpenGLControl. Nur: Das gibt´s nicht. Weder in den Komponenten noch sonstwo. Also mit Deklaration suchen findet er nichts (kompilieren tut er sowieso nicht).
dglOpenGL geht auch nicht mangels GetDC.
Einzige Möglichkeit, die mir da noch einfällt, wäre GLScene, nur... Kann man da abgesehen von den Komponenten noch irgendwas benutzen, oder muss man bei Beleuchtung per Vertex und so bleiben?

Vor nem Jahr oder so hab ich´s schon mal mit SDL zum Laufen gebracht, aber nach den ersten paar Dreiecken war das ganze dann bereits unübersichtlich genug, dass ich mich in meinem Code nicht mehr zurechtgefunden habe. Außerdem müsste man sich da sämtliche Komponenten selber machen (aus demselben Grund gefallt mir GLUT nicht wirklich. Ja, und weil noch eine überflüssige dll mitgeschleppt wird, die das Programm wahrscheinlich auf anderen OS unbenutzbar macht (*), oder eben, wenn sie nicht mitgeschleppt sondern installiert wird, allgemein auf anderen Rechnern).

(*): Ja, ich weiß man muss neu kompilieren, aber das geht wesentlich einfacher als irgendwelche Dateien herumzuschieben.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL mit Lazarus?
BeitragVerfasst: Mo Aug 08, 2011 11:30 
Offline
DGL Member

Registriert: Mi Sep 15, 2010 18:22
Beiträge: 59
Wohnort: Sachsen Meißen
Programmiersprache: Pascal, C(++), Java
Die OpenGL-Komponente muss erst installiert werden und befindet sich im Verzeichnis Lazarus\components\opengl und das Beispiel unter examples\openglcontrol.

_________________
bluesky


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL mit Lazarus?
BeitragVerfasst: Mo Aug 08, 2011 11:52 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Du brauchst das OpenGLControl nicht, und mit Lazarus kann man problemlos die dglOpenGL.pas benutzen (siehe mein aktuelles Projekt, nutzt unseren Header sowohl unter Windows als auch unter Linux). Einen DC kannst du dir unter Windows ja ganz einfach selber holen (vom Fenster z.b.) und unter Linux muss mans halt händisch statt mit CreateRenderingContext machen, also z.b. via glxCreateContext.

P.S. : Das OpenGLControl ist halt praktisch wenn man cross-plattform macht, weil es einem einen aktiven Kontext für verschiedene Betriebsysteme liefert. Aber ein Muss unter Lazarus ists definitiv nicht. Und es läuft problemlos zusammen mit unserer dglOpenGL.pas!

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL mit Lazarus?
BeitragVerfasst: Mo Aug 08, 2011 12:16 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Ja, das OpenGLControl ist das sinnigste, wenn du unbedingt eine vollständige GUI-Anwendung drumherum brauchst. Sonst ist SDL um längen sinnvoller (weil kleiner). Wichtig ist, dass du das OpenGLControl erst initialisieren kannst, wenn das Fenster vollständig erstellt ist (also z.B. im OnActivate oder OnShow oder mit einem Timer). Dann aber vorsichtig sein, dass das nur einmal passiert (also z.B. nen Boolean setzen, wenn fertig initialisiert ist und den vorher prüfen…).

greetings

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL mit Lazarus?
BeitragVerfasst: Mo Aug 08, 2011 14:16 
Offline
DGL Member

Registriert: Sa Nov 24, 2007 11:59
Beiträge: 116
Programmiersprache: FreePascal
Wem SDL noch zu fett ist oder unbedingt cross-platform nen OpenGL 3-Context haben will, kann auch zu GLFW greifen, Pascal-Header werden da praktischerweise gleich mitgeliefert. Allerdings bietet es auch wirklich nur die nötigsten Funktionen zum Context erstellen und fürs Input Handling.

Wenn nicht unbedingt benötigt, würde ich die LCL an eurer Stelle aus OpenGL-Anwendungen rauslassen, zumal die dazu neigt, von Version zu Version problematischer zu werden (TScrollBox hat keine Scrollbalken mehr, ab und an fehlt bei der Qt-Version der Button zum Fenster schließen, ..)

_________________
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL mit Lazarus?
BeitragVerfasst: Di Aug 09, 2011 21:24 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 10, 2011 19:00
Beiträge: 43
Programmiersprache: FreePascal , C++
Das mitschleppen der SDL dll ist wirklich ziemlich unpraktisch.
Aber ich habe mich damit einigermaßen abgefunden, weil ich es einfach enorm toll finde wenn man meine Programme nur durch neues kompilieren auf eine andere Plattform(*) bringen kann. Außerdem war ich ehrlich gesagt zu bequem mir dieses TOpenGLControl zu installieren.

Zum Thema GUI hätte ich den Vorschlag dass man das SDL-Fenster aus einer LCL Anwendung erzeugt.
Mein erstes kleines Spielchen funktionierte so. Allerdings habe ich damals das Fenster nach einem
ButtonClick erzeugt, worauf die Hauptschleife einsetzte, und somit die LCL GUI einfrohr. Aber durch etwas geschickteren Code könnte man dieses Verhalten bestimmt umgehen (vllt. mit Threads).
Dann sind es eben zwei Fenster eins für OpenGL und eins für Einstellungen. Für einen Leveleditor o.Ä. könnte das aber reichen. Ist aber nur so ne Idee...

Und die Unübersichtlichkeit im Code finde ich nicht so dramatisch.

(*) Wenn diese SDL unterstützt und die SDL Header + Libary hat


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL mit Lazarus?
BeitragVerfasst: Do Aug 11, 2011 12:55 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 11, 2009 08:02
Beiträge: 532
Programmiersprache: pascal (Delphi 7)
ok, hab jetzt mal das TOpenGLControl installiert. Zumal da keine OpenGL funktionen dabei sind, hab ich dann dafür dglOpenGL verwendet -> SIGSEGV

InitOpenGL hab ich gemacht, der Rest, also CreateRenderingContext und ActivateRenderingContext geht mangels DC nicht.


Zitat:
Sonst ist SDL um längen sinnvoller (weil kleiner)
Ich hab am einen Rechner 900 GByte HDD, am anderen immerhin 230, auf die paar MByte kommt´s mir nicht an

Zitat:
Wichtig ist, dass du das OpenGLControl erst initialisieren kannst, wenn das Fenster vollständig erstellt ist
:?: Ich dachte, das klickt man einfach auf das Fenster wie alle anderen Komponenten auch

Zitat:
ab und an fehlt bei der Qt-Version der Button zum Fenster schließen
qt version gibt´s da auch? Ich hab mir damals umständlich gtk deswegen installiert


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL mit Lazarus?
BeitragVerfasst: Do Aug 11, 2011 14:05 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
sharkman hat geschrieben:
ok, hab jetzt mal das TOpenGLControl installiert. Zumal da keine OpenGL funktionen dabei sind, hab ich dann dafür dglOpenGL verwendet -> SIGSEGV

InitOpenGL hab ich gemacht, der Rest, also CreateRenderingContext und ActivateRenderingContext geht mangels DC nicht.


Klappt hier einwandfrei. Sowohl Windows als auch Linux. Du musst aber nachdem du den Kontext aktuell gemacht hast (TOpenGLControl.MakeCurrent) noch ReadExtensions und ReadImplementationProperties aufrufen, das macht ja ansonsten ActivateRenderingContext.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL mit Lazarus?
BeitragVerfasst: Do Aug 11, 2011 14:54 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 11, 2009 08:02
Beiträge: 532
Programmiersprache: pascal (Delphi 7)
Ja, funktioniert so.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL mit Lazarus?
BeitragVerfasst: Do Aug 11, 2011 16:44 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
sharkman hat geschrieben:
Zitat:
Wichtig ist, dass du das OpenGLControl erst initialisieren kannst, wenn das Fenster vollständig erstellt ist

Ja, habe mich ungenau ausgedrückt. Also du kannst die Initialisierung des OpenGL-Kontextes (ReadExtensions etc.) erst machen, wenn das Fenster vollständig erstellt ist.

greetings

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 7 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.009s | 16 Queries | GZIP : On ]