OpenGL => openglcontrol example
OpenGL => openglcontrol example
Hallo,
ich habe mal - als Fingerübung - das Example openglcontrol auf den aktuellen Stand gebracht.
Also ausgehend von einem leeren, neuen Projekt alles neu "befüllt".
Siehe Anhang.
ich habe mal - als Fingerübung - das Example openglcontrol auf den aktuellen Stand gebracht.
Also ausgehend von einem leeren, neuen Projekt alles neu "befüllt".
Siehe Anhang.
- Dateianhänge
-
openglcontrol_v2.zip
- (749.55 KiB) 44-mal heruntergeladen
-
- Beiträge: 118
- Registriert: Do 20. Jul 2017, 23:47
- OS, Lazarus, FPC: Win7 und Win10
- CPU-Target: xxBit
- Wohnort: Südheide (Schnuckenland)
Re: OpenGL => openglcontrol example
Bei mir auf Win10 mit 64Bit und Lazarus 3.2 geht's kompilieren problemlos und läuft.
Beim Anschauen des Codes sind mir auf die Schnelle zwei Dinge aufgefallen, die du vielleicht mal Checken solltest:
1.) Im FormDestroy würde ich bei der Schleife mit Low und High beim Array arbeiten:
2.) In FormResize mit assigned prüfen
Nachtrag: Ich habe gerade in meinen gesammelten Werken rumgestöbert und dabei festgestellt, daß ich das Projekt in 2008 oder 2009 auch mal lauffähig gemacht hatte.
Da war das mit dem " <> nil" auch drinne im Originalcode....und ich hatte es so gelassen...
Beim Anschauen des Codes sind mir auf die Schnelle zwei Dinge aufgefallen, die du vielleicht mal Checken solltest:
1.) Im FormDestroy würde ich bei der Schleife mit Low und High beim Array arbeiten:
Code: Alles auswählen
for i := Low(Textures) to High(Textures) do begin
Textures[i]:= 0;
FreeAndNil( MyglTextures[i]);
end;
...
Code: Alles auswählen
procedure TExampleFormV2.FormResize(Sender: TObject);
begin
if assigned(OpenGLControl1) then
OpenGLControl1.SetBounds( Scale96ToForm( 16),
Scale96ToForm( 30),
Width -Scale96ToForm( 120),
Height -Scale96ToForm( 70));
end;
Da war das mit dem " <> nil" auch drinne im Originalcode....und ich hatte es so gelassen...

-
- Beiträge: 6955
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: OpenGL => openglcontrol example
Bei mir läuft das Original-Beispiel. welches bei Lazarus dabei ist.ich habe mal - als Fingerübung - das Example openglcontrol auf den aktuellen Stand gebracht.
Also ausgehend von einem leeren, neuen Projekt alles neu "befüllt".
Linux 64Bit.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
Re: OpenGL => openglcontrol example
Das Original Example compiliert und läuft bei mir auch einwandfrei.Mathias hat geschrieben: Fr 21. Jun 2024, 09:16Bei mir läuft das Original-Beispiel. welches bei Lazarus dabei ist.ich habe mal - als Fingerübung - das Example openglcontrol auf den aktuellen Stand gebracht.
Also ausgehend von einem leeren, neuen Projekt alles neu "befüllt".
Linux 64Bit.
Ist (nur unter Windows ?) halt merkwürdig, daß erstmal ein CMD Fenster aufpoppt.
Und das OpenGL Control wird im Original-Beispiel zu Fuß "created".
Ebenso wie all die Buttons.
Ansonsten, der neue Code berücksichtigt das Windows-Scaling.
Und verwendet Anchors für die Buttons.
Zuletzt geändert von PeterS am Fr 21. Jun 2024, 14:22, insgesamt 2-mal geändert.
Re: OpenGL => openglcontrol example
Besteht denn die Gefahr daß das OpenGL-Objekt bei OnResize mal ungültig ist ?TSchnuckenbock hat geschrieben: Do 20. Jun 2024, 16:14 2.) In FormResize mit assigned prüfen
Code: Alles auswählen
procedure TExampleFormV2.FormResize(Sender: TObject); begin if assigned(OpenGLControl1) then ...
In diesem neuen Code wird es doch "autocreatet", durch die FORM-Datei .. ???
-
- Beiträge: 118
- Registriert: Do 20. Jul 2017, 23:47
- OS, Lazarus, FPC: Win7 und Win10
- CPU-Target: xxBit
- Wohnort: Südheide (Schnuckenland)
Re: OpenGL => openglcontrol example
Eventuell ist der check mit dem assigned überflüssig. Ich könnte mir spontan vorstellen, daß es vielleicht schmettern könnte, wenn man beim Beenden des Programms noch mal im FormResize landet.
Du kannst es ja mal weglassen, und schauen was passiert.
Bei der (unbenutzten?) Funktion "LoadFileToMemStream" war mir auch aufgefallen, daß es da eventuell ein Speicherleck geben könnte, wenn der Result, also der TMemoryStream, nicht irgendwo nach dem Aufrufen wieder vernichtet wird.
Aber alles ohne Gewähr...das war nur mein fixer Blick auf den Code.
Was das CMD-Fenster im Original-Code anbelangt: Ich könnte mir vorstellen, daß das vor Jahrzehnten noch irgendwie erforderlich gewesen sein könnte.
FreePascal und Lazarus haben sich in den viele Jahren seit ihrer Schöpfung massiv weiterentwickelt. Ich glaube ich hatte das erstemal mir damals die Version 0.9.6 installiert. Das müßte dann laut Wikipedia im Jahre 2005 gewesen sein. Seitdem ist viel passiert.
Man stolpert auch immer wieder über Pascal-Code aus der Delphi-Anfangs-Zeit oder gar Turbo-Pascal, was dann irgendwie immer wieder rübergerettet wurde zu neueren Versionen. Damals mußte man z.B. auch viel mit Pointern rummachen, wo es heute viel einfachere fertige Klassen für gibt.
Du kannst es ja mal weglassen, und schauen was passiert.
Bei der (unbenutzten?) Funktion "LoadFileToMemStream" war mir auch aufgefallen, daß es da eventuell ein Speicherleck geben könnte, wenn der Result, also der TMemoryStream, nicht irgendwo nach dem Aufrufen wieder vernichtet wird.
Aber alles ohne Gewähr...das war nur mein fixer Blick auf den Code.
Was das CMD-Fenster im Original-Code anbelangt: Ich könnte mir vorstellen, daß das vor Jahrzehnten noch irgendwie erforderlich gewesen sein könnte.
FreePascal und Lazarus haben sich in den viele Jahren seit ihrer Schöpfung massiv weiterentwickelt. Ich glaube ich hatte das erstemal mir damals die Version 0.9.6 installiert. Das müßte dann laut Wikipedia im Jahre 2005 gewesen sein. Seitdem ist viel passiert.
Man stolpert auch immer wieder über Pascal-Code aus der Delphi-Anfangs-Zeit oder gar Turbo-Pascal, was dann irgendwie immer wieder rübergerettet wurde zu neueren Versionen. Damals mußte man z.B. auch viel mit Pointern rummachen, wo es heute viel einfachere fertige Klassen für gibt.
-
- Beiträge: 6955
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: OpenGL => openglcontrol example
Wen es nach mir ginge, könnte man die Examples alle entfernen. Dies ist alles unnötiger Ballast. Vor allem merkt man dies, wen man mehrere Lazarus Installationen parallel hat.
Und heute wo fast jeder Internet hat, konnte man die Examples als Download anbieten.
Und heute wo fast jeder Internet hat, konnte man die Examples als Download anbieten.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
- af0815
- Lazarusforum e. V.
- Beiträge: 6848
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: OpenGL => openglcontrol example
zu dem herausnehmen der Examples gibt es schon Bestrebungen im englischen Forum, nur ist es leiser drum geworden.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).