Einstieg OpenGL => OpenGL Tutorial

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...
PeterS
Beiträge: 161
Registriert: So 22. Feb 2015, 11:36
OS, Lazarus, FPC: L 3.8
CPU-Target: win32

Einstieg OpenGL => OpenGL Tutorial

Beitrag von PeterS »

Hi,

ich habe gerade ein Test-Projekt gestartet, nach der Anleitung von hier:

https://wiki.freepascal.org/OpenGL_Tuto ... CL_program


Mein Test-Programm zeichnet zwar einmalig das Dreieck,
aber dann wird wieder nur ein schwarzes Rechteck angezeigt.

Erst wenn ich das Fenster kleiner ziehe als das Panel, auf dem das TOpenGLControl sitzt,
wird das OpenGL Fenster - dauerhaft - neu gezeichnet.

Als Einsteiger in dieses Thema habe ich keine Ahnung, warum das so ist.
Kann mir jemand helfen ?
Dateianhänge
LCL OpenGL Test 01.zip
(141.1 KiB) 52-mal heruntergeladen

wp_xyz
Beiträge: 5189
Registriert: Fr 8. Apr 2011, 09:01

Re: Einstieg OpenGL => OpenGL Tutorial

Beitrag von wp_xyz »

Bin jetzt nicht der große OpenGL-Guru, aber ich bin schon mehrmals darüber gestolpert, dass ich nicht die MakeCurrent-Methode aufgerufen habe. Das scheint auch hier der Fall zu sein:

Code: Alles auswählen

procedure TForm1.GLboxPaint(Sender: TObject);
begin
  GLBox.MakeCurrent;
  .... 
Damit funktioniert's. Hintergrund ist wahrscheinlich, dass du mehrere OpenGL-Controls auf den Formular haben kannst, und festlegen musst, welches gerade gezeichnet wird.

Mathias
Beiträge: 6956
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Einstieg OpenGL => OpenGL Tutorial

Beitrag von Mathias »

Mein Test-Programm zeichnet zwar einmalig das Dreieck,
aber dann wird wieder nur ein schwarzes Rechteck angezeigt
Ich habe es unter Linux getestet, ausser das du ein Problem mit klein und gross Schreibung der meinunit hattest, läuft es wie erwartet.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

PeterS
Beiträge: 161
Registriert: So 22. Feb 2015, 11:36
OS, Lazarus, FPC: L 3.8
CPU-Target: win32

Re: Einstieg OpenGL => OpenGL Tutorial

Beitrag von PeterS »

Mathias hat geschrieben: Di 4. Jun 2024, 09:14
Mein Test-Programm zeichnet zwar einmalig das Dreieck,
aber dann wird wieder nur ein schwarzes Rechteck angezeigt
Ich habe es unter Linux getestet, ausser das du ein Problem mit klein und gross Schreibung der meinunit hattest, läuft es wie erwartet.
Interessant daß sich das Beispiel-Programm unter Windows und unter Linux unterschiedlich verhält ..
wp_xyz hat geschrieben: Di 4. Jun 2024, 00:51

Code: Alles auswählen

  GLBox.MakeCurrent;
  .... 
Ich installiere gerade das aktuelle Lazarus 3.4
und nach dem Einrichten teste ich mal dieses GLBox.MakeCurrent;

PeterS
Beiträge: 161
Registriert: So 22. Feb 2015, 11:36
OS, Lazarus, FPC: L 3.8
CPU-Target: win32

Re: Einstieg OpenGL => OpenGL Tutorial

Beitrag von PeterS »

wp_xyz hat geschrieben: Di 4. Jun 2024, 00:51

Code: Alles auswählen

  GLBox.MakeCurrent;
  .... 
Damit funktioniert's.
Ja, vielen Dank !

Hier unter Windows sieht es direkt nach dem Start - ohne GLBox.MakeCurrent - so aus:
Screenshot (975).png
Screenshot (975).png (3.74 KiB) 2912 mal betrachtet
Und mit GLBox.MakeCurrent :
Screenshot (976).png
Screenshot (976).png (8.63 KiB) 2912 mal betrachtet

PeterS
Beiträge: 161
Registriert: So 22. Feb 2015, 11:36
OS, Lazarus, FPC: L 3.8
CPU-Target: win32

Re: Einstieg OpenGL => OpenGL Tutorial

Beitrag von PeterS »

wp_xyz hat geschrieben: Di 4. Jun 2024, 00:51Hintergrund ist wahrscheinlich, dass du mehrere OpenGL-Controls auf den Formular haben kannst, und festlegen musst, welches gerade gezeichnet wird.
Dazu habe ich diesen Link gefunden:

https://computergraphics.stackexchange. ... do-exactly

=> "It is common to have a single context per thread in a multi-threaded OpenGL application. "
Zuletzt geändert von PeterS am Di 4. Jun 2024, 13:54, insgesamt 1-mal geändert.

PeterS
Beiträge: 161
Registriert: So 22. Feb 2015, 11:36
OS, Lazarus, FPC: L 3.8
CPU-Target: win32

Re: Einstieg OpenGL => OpenGL Tutorial

Beitrag von PeterS »

Mathias hat geschrieben: Di 4. Jun 2024, 09:14 Ich habe es unter Linux getestet, ausser das du ein Problem mit klein und gross Schreibung der meinunit hattest, läuft es wie erwartet.
Bin schon älteres Semester, auf meinem Bildschirm werden die Buchstaben jedes Jahr immer kleiner .. :D
Da helfen mir die Großbuchstaben, als Trenner ..

Mathias
Beiträge: 6956
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Einstieg OpenGL => OpenGL Tutorial

Beitrag von Mathias »

Bin schon älteres Semester, auf meinem Bildschirm werden die Buchstaben jedes Jahr immer kleiner ..
Ich vermute du hast etwas manuell im Explorer umbenannt. Lazarus selbst macht in der Regel alles richtig.
ansonsten würde Platfomunabhängikeit nicht funktionieren.

Wen du dich für OpenGL interessierst.
Da habe ich ein Tutorial und Beispiele gemacht.
https://github.com/sechshelme/Lazarus-O ... 3-Tutorial
Das meiste ist modernes OpenGL 3.3.
Wen etwas nicht geht, einfach fragen.

Nur die Frage, was willst du genau mit OpenGL machen ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

PeterS
Beiträge: 161
Registriert: So 22. Feb 2015, 11:36
OS, Lazarus, FPC: L 3.8
CPU-Target: win32

Re: Einstieg OpenGL => OpenGL Tutorial

Beitrag von PeterS »

Mathias hat geschrieben: Di 4. Jun 2024, 14:24 Ich vermute du hast etwas manuell im Explorer umbenannt. Lazarus selbst macht in der Regel alles richtig.
ansonsten würde Platfomunabhängikeit nicht funktionieren.
In dem Moment wo ich zum ersten Mal eine Datei (Projekt oder Unit) abspeichere,
kann ich unter Windows einen Dateinamen auch mit Großbuchstaben vergeben.
Da grätscht mir Lazarus nicht rein ..

PeterS
Beiträge: 161
Registriert: So 22. Feb 2015, 11:36
OS, Lazarus, FPC: L 3.8
CPU-Target: win32

Re: Einstieg OpenGL => OpenGL Tutorial

Beitrag von PeterS »

Mathias hat geschrieben: Di 4. Jun 2024, 14:24 Nur die Frage, was willst du genau mit OpenGL machen ?
Ich habe eine Software geschrieben, die Gerätedaten von einem seriellen Bus ausliest / mitliest.

Ausgewählte Daten (Temperaturen etc.) stelle ich derzeit dar, indem ich die in ein TImage schreibe.

Code: Alles auswählen

Image1.Canvas.TextOut(  ..
Ein "dynamisches" OpenGL-Display mit Animationen wäre cool. Und viel flotter ..

Bemi
Beiträge: 14
Registriert: So 7. Jan 2024, 15:02
OS, Lazarus, FPC: XP, 7, 10, 11/ 3.8 /3.2.2
CPU-Target: X86-64
Wohnort: Eckental

Re: Einstieg OpenGL => OpenGL Tutorial

Beitrag von Bemi »

Hallo, vielleicht ist hier was für dich dabei: https://delphigl.com/

Mathias
Beiträge: 6956
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Einstieg OpenGL => OpenGL Tutorial

Beitrag von Mathias »

Ausgewählte Daten (Temperaturen etc.) stelle ich derzeit dar, indem ich die in ein TImage schreibe.
Mit cairo kann man auch sehr schöne Sachen machen.
OpenGL habe ich nur für einen FrameBufffer genommen, weil ich mit TBitmap nichts gescheites hinkriege.

Du kannst mal dieses Demo im Anhang angucken, habe es rasch in der Schnelle gemacht,
Dateianhänge
LCL_cairo_OpenGL.zip
(71.63 KiB) 51-mal heruntergeladen
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

PeterS
Beiträge: 161
Registriert: So 22. Feb 2015, 11:36
OS, Lazarus, FPC: L 3.8
CPU-Target: win32

Re: Einstieg OpenGL => OpenGL Tutorial

Beitrag von PeterS »

Mathias hat geschrieben: Di 4. Jun 2024, 16:09 Du kannst mal dieses Demo im Anhang angucken, habe es rasch in der Schnelle gemacht,
Nicht so einfach .. nicht der Code ist das Problem.
Wo bekomme ich eine virenfreie "libcairo-2.dll" in 32 bit für Windows her ?

PeterS
Beiträge: 161
Registriert: So 22. Feb 2015, 11:36
OS, Lazarus, FPC: L 3.8
CPU-Target: win32

Re: Einstieg OpenGL => OpenGL Tutorial

Beitrag von PeterS »

Ich habe mal eine DLL herunter geladen von einer der gängigen DLL-Download-Plattformen.
(Aber nicht ausprobiert !)

Die DLL will ja selber noch mal 4 DLLs nachladen .. :shock:

Screenshot (605).png
Screenshot (605).png (50.7 KiB) 2852 mal betrachtet

Mathias
Beiträge: 6956
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Einstieg OpenGL => OpenGL Tutorial

Beitrag von Mathias »

https://github.com/sechshelme/Lazarus-G ... master/DLL

Hier solltest du alles finden. Ich habe diese alle von GIMP.
Nimmst einfach die fehlenden raus.
So musst du nicht in dubiosen Seiten suchen.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten