Kein Bedarf an OpenGL / Vulkan

Für allgemeine Fragen zur Programmierung, welche nicht! direkt mit Lazarus zu tun haben.
Antworten
Mathias
Beiträge: 6209
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Kein Bedarf an OpenGL / Vulkan

Beitrag von Mathias »

Was mir in den letzten Jahren aufgefallen ist, das es mit OpenGL fast keine Beiträge gibt.
Vor etwa 10 Jahren sah es noch viel anders aus, es gibt sogar ein deutsche Forum zu diesem Thema, welches dazumal fast nur für Delphi war. Dort hatte es früher tägliche mehrere Post. https://delphigl.com/forum/
Und jetzt, wen man Glück hat, hat es alle 2 Monate mal einen Post. Die letzten paar kürzlich erstellten sind alles Fragen, die ich stellte.
Auch im internationalen Forum von OpenGL läuft sehr wenig, obwohl dies hauptsächliche für das verbereite C/C++ ist. 2-3 Posts im Tag.

Mich verwundert dies echt, da OpenGL und Vulkan ein sehr spannendes Thema ist. Man hat schier endlos Möglichkeiten was Grafik-Animationen anbelangt. Und so nebenbei läuft es auf fast allen Plattformen, auch auf den Suchtkisten (Handy)
Somit kann es auch nicht veraltet sein, vor allem Vulkan.

Was einer ein Grund, wies das dies so brach liegt ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Warf
Beiträge: 1913
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Kein Bedarf an OpenGL / Vulkan

Beitrag von Warf »

Es gibt mittlerweile sehr viele Alternativen auf deutlich Höherem level. Z.B. wenn du ganze Spiele oder hoch interaktive Grafikanwendungen machen willst, tut man es sich nicht an in OpenGL selbst die Vertices und Shader zusammenzubauen, sondern nimmt stattdessen einfach eine Engine wie Unity, Godot oder Unreal.

Für Animationen und Visuelle Komponenten haben mittlerweile die meisten Frameworks Hardwarebeschläunigte Möglichkeiten. Delphi hat FireMonkey, .Net hat WPF, für Webanwendungen hast du CSS und das HTML5 Canvas, etc.

Und während Grafisch polierte und Flüssige Anwendungen immer wichtiger werden, gibt es Gleichzeitig auch viel mehr Bibliotheken und co die einem das Vereinfachen. Klar benutzt das alles OpenGL/Vulcan oder DirectX im Hintergrund, aber das ist halt wie mit Assembly und Hochsprachen, warum mit dem Sperrigen Primitiven arbeiten wenn es einfachere Alternativen gibt.

Beispiel, du willst einen Schatten in OpenGL, dann musst du neben OpenGL für die ganzen Vertices auch noch die zusätzliche Shader Sprache GLSL lernen um einen Schattenshader über deine Vertices zu legen.
In CSS geht das so:

Code: Alles auswählen

drop-shadow(0 0 0 black);

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1498
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: Kein Bedarf an OpenGL / Vulkan

Beitrag von corpsman »

Also ich setze immer noch gern und viel OpenGL ein ;), verzwinge es aber nicht, so habe ich das Sunburst chart und die CirclePack Charts als LCL Componenten entwickelt.

Meistens ist OpenGL auch bei 2D- Anwendungen aber dennoch Sinnvoll. Wie Mathias ja bereits bemerkt hat ist das gerade bei Animationen sehr praktisch. Im CCM setzte ich es z.B. einfach nur zum Darstellen der Google Map ein (OpenGL Google map Demo). Ich habe mir dazu meine eigenen units gebastelt und stelle diese zur Zeit Stück für Stück online (Link). Leider trifft aber auch zu was Warf geschrieben hat. Die ganzen Shader wurden nach meinem Studium "erfunden" und ich hab es leider bisher immer noch nicht geschafft diese ordentlich zu verstehen / lernen und damit auch zu nutzen ;/. Und dass obwohl es doch hier Tutorials gibt...

Wer also wie ich nur auf die Low Level sachen setzt und irgendwann mal alle seine Units zusammen hat. Der braucht da tatsächlich nicht mehr viel neues..
--
Just try it

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

Re: Kein Bedarf an OpenGL / Vulkan

Beitrag von Mathias »

Und dass obwohl es doch hier Tutorials gibt...
Dann schau dieses auch mal an, dies habe ich vor ein paar Jahren gemacht.
https://wiki.delphigl.com/index.php/Laz ... 3_Tutorial
Da habe ich alles beschreiben, wie dies mit den Shadern funktioniert. Wen man es Schritt für Schritt durchgeht, sollte es keine Hexerei sein.
Das mit den Shadern ist voll Low Level, man hat fast unbegrenzte Möglichkeiten.
tut man es sich nicht an in OpenGL selbst die Vertices und Shader zusammenzubauen, sondern nimmt stattdessen einfach eine Engine wie Unity, Godot oder Unreal.
Gut möglich, dafür aber nicht so spannend.
Beispiel, du willst einen Schatten in OpenGL, dann musst du neben OpenGL für die ganzen Vertices auch noch die zusätzliche Shader Sprache GLSL lernen um einen Schattenshader über deine Vertices zu legen.
Schatten Effekte ist wohl eines der schwierigsten Thema von OpenGL, ich habe es bis jetzt auch nicht hingekriegt.
Ein einfacher Schatten auf einem glatten Boden ist noch machbar, aber wen es Unebenheiten hat wird es sehr schwierig.

DirektX fasse ich nicht an, dies ist voll M$ lastig.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

PascalDragon
Beiträge: 834
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: Kein Bedarf an OpenGL / Vulkan

Beitrag von PascalDragon »

Mathias hat geschrieben:
Mo 23. Okt 2023, 14:17
tut man es sich nicht an in OpenGL selbst die Vertices und Shader zusammenzubauen, sondern nimmt stattdessen einfach eine Engine wie Unity, Godot oder Unreal.
Gut möglich, dafür aber nicht so spannend.
Beispiel, du willst einen Schatten in OpenGL, dann musst du neben OpenGL für die ganzen Vertices auch noch die zusätzliche Shader Sprache GLSL lernen um einen Schattenshader über deine Vertices zu legen.
Schatten Effekte ist wohl eines der schwierigsten Thema von OpenGL, ich habe es bis jetzt auch nicht hingekriegt.
Ein einfacher Schatten auf einem glatten Boden ist noch machbar, aber wen es Unebenheiten hat wird es sehr schwierig.
Man könnte auch einfach eine Engine wie Castle Engine nehmen. Da sie in Object Pascal für Object Pascal geschrieben ist, kann man sich anschauen wie die Dinge gemacht werden. :)
FPC Compiler Entwickler

Rechenschieber
Beiträge: 1
Registriert: Fr 27. Okt 2023, 19:38

Re: Kein Bedarf an OpenGL / Vulkan

Beitrag von Rechenschieber »

Hallo liebe Gemeinde,

allerhöchsten Respekt für dieses Forum und deren Mitlieder und allerhöchsten Respekt dir, PascalDragon.

Ich bin bei Delphi 2009 Prof geblieben und nutze Lazarus gern nebenbei und liebe es, derzeit unter Win 11.
Also Hobbyproger befasse ich mich gern mit OpenGL und DXF (CNC).
Wie jeder andere auch, informiert man sich gern über den neuesten Stand der Dinge.

Mein Fazit über Castle Engine:

Ehrlich gesagt, habe ich leider gar keine Ahnung was man damit ernsthaft machen soll.
Auf mich wirkt es etwas zu unfrisch und "zu kompliziert".

Hinzufügen möchte ich noch, dass ich den Lazarus-Entwicklern meinen Dank aussprechen möchte.

Auf weitere viele Jahre mit Lazarus.

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

Re: Kein Bedarf an OpenGL / Vulkan

Beitrag von Mathias »

Es gibt mittlerweile sehr viele Alternativen auf deutlich Höherem level. Z.B. wenn du ganze Spiele oder hoch interaktive Grafikanwendungen machen willst, tut man es sich nicht an in OpenGL selbst die Vertices und Shader zusammenzubauen, sondern nimmt stattdessen einfach eine Engine wie Unity, Godot oder Unreal.
Ist sowas mit fertigen Engines auch möglich ?
Die Mesh auf dem Bild ist animiert.

Die Animation wird im Tesselations-Shader generiert.
Als Eingabe habe ich nur einen einfachen Würfel.

Code: Alles auswählen

  if (isSinus) {
    float si = sin((gl_Position.z + sinOfs) * 20) / 8 - 1;
    gl_Position.x *=  abs( si);
    si = sin((gl_Position.z + 1.5 + sinOfs) * 19) / 8 - 1;
    gl_Position.y *=  abs( si);

    si = sin((gl_Position.x + sinOfs) * 13) / 8 - 1;
    gl_Position.y *=  abs( si);
    si = sin((gl_Position.x+1.5 + sinOfs) * 14) / 8 - 1;
    gl_Position.z *=  abs( si);

    si = sin((gl_Position.y + sinOfs) * 17) / 8 - 1;
    gl_Position.z *= abs( si);
    si = sin((gl_Position.y+1.5 + sinOfs) * 13) / 8 - 1;
    gl_Position.x *= abs( si);
  }      
Dateianhänge
Bildschirmfoto vom 2023-10-28 13-47-54.png
Bildschirmfoto vom 2023-10-28 13-47-54.png (35.87 KiB) 4361 mal betrachtet
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Warf
Beiträge: 1913
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Kein Bedarf an OpenGL / Vulkan

Beitrag von Warf »

Klar, du kannst in einer Engine dir auch deine Polygone und shader selbst zusammen bauen. Ist normalerweise weniger effizient, da die Engine einiges abstrahiert, dafür sind andere sachen einfacher und besser optimiert.

Und versuch mal jetzt noch code hinzuzufügen das 2 von diesen objekten miteinander kollidieren und physikalisch korrekt voneinander abprallen. In Godot würdest du deine Form als ConcavePolygonShape definieren, einen PhysicsBody hinzufügen und mit 2 klicks im GUI Kollision anschalten und es funktioniert ohne eine einzige Zeile Code zusätzlich zu schreiben.

Tatsächlich steht Pascal GDNative integration auf meiner Liste mit Projekten die ich mal machen möchte. Godot hat nämlich ein sehr gutes System um beliebige Sprachen einzubinden, da man einfach die Engine Scripte als DLL schreiben kann und gegen die Engine linken kann. Damit funktioniert auch Debugging und co aus anderen Editoren/IDEs heraus. Könnte man also relativ einfach mit ein paar packages mit Lazarus integrieren.

Leider habe ich zu viele ideen und viel zu wenig Zeit um alles umzusetzen

Antworten