Lazarus - OpenGL 3.3 Tutorial

Zur Vorstellung von Komponenten und Units für Lazarus
Mathias
Beiträge: 6146
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Lazarus - OpenGL 3.3 Tutorial

Beitrag von Mathias »

Ich stelle hier mein neustes Projekt vor, ein Tutorial für

Lazarus - OpenGL 3.3 Tutorial

Ich hoffe, das dies einige User den Einstieg in das moderne OpenGL mit diesem Tutorial schaffen.

Das Tutorial ist noch in Arbeit, aber es wird fortlaufend ergänzt.
Wen jemand eine Anregungen hat, kann er sich gerne melden,
Zuletzt geändert von Mathias am So 4. Mär 2018, 23:08, insgesamt 1-mal geändert.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

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

Re: Lazarus - OpenGL 3.3 Tutorial

Beitrag von wp_xyz »

Melde dich bei github oder sourceforge an.

[Sch... - dass sollte eigentlich an den anderen Post]

Frank Ranis
Beiträge: 201
Registriert: Do 24. Jan 2013, 21:22

Re: Lazarus - OpenGL 3.3 Tutorial

Beitrag von Frank Ranis »

Hallo Mathias,

vielen Dank für dein Tutorial , feine Sache.
Ich habe mir erst mal die Quellen gesaugt und bin am rumprobieren.

Was ich aber gleich feststellen mußte , das OpenGl 3.3 läuft auf meinen alten Rechnern nicht.
Ich denke das liegt wohl an den alten Grafikkarten .

Könntest Du im Tutorial noch etwas zur Hardware-Mindestanforderung erzählen ?

Gruß

Frank
www.flz-vortex.de

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

Re: Lazarus - OpenGL 3.3 Tutorial

Beitrag von Mathias »

Von hier aus, sind nun alle Sourcen auf guthub erreichbar.
https://wiki.delphigl.com/index.php/Laz ... 3_Tutorial

Entweder alle, oder auch jedes Tutorial einzeln.

Auch hat es Ergänzungen im Tutorial gegeben.

Was ich aber gleich feststellen mußte , das OpenGl 3.3 läuft auf meinen alten Rechnern nicht.
Ich denke das liegt wohl an den alten Grafikkarten .

Entweder ist die Karte zu alt, oder die Treiber veraltet.
Was verwendest du für Hardware und OS ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Frank Ranis
Beiträge: 201
Registriert: Do 24. Jan 2013, 21:22

Re: Lazarus - OpenGL 3.3 Tutorial

Beitrag von Frank Ranis »

Hallo Mathias,
Was ich aber gleich feststellen mußte , das OpenGl 3.3 läuft auf meinen alten Rechnern nicht.
Ich denke das liegt wohl an den alten Grafikkarten .

Entweder ist die Karte zu alt, oder die Treiber veraltet.
Was verwendest du für Hardware und OS ?


Ich habe noch ein paar alte XP-Rechner , Grafikkarten weis ich jetzt nicht , dort läuft es leider nicht .
Sind aber auch schon wirklich alte Schätzchen Alter>8-10 Jahre.

Auf dem Win7-Rechner sitzt ne Intel(R) HD Graphics 4600 , da laufen fast alle deine Demos , bis auf die , wo BgraBitmap verwendet wird , das habe ich noch nicht installiert.

Das Problem ist halt , das meine Modellbausoftware auf vielen Bastel-Keller-Rechneren läuft , die teils noch Win98 drauf haben.
Diese Rechner werden so lange wie möglich am Leben erhalten , wegen alter CNC-Maschinen (Fräsen , Styoschneider u.u.u) und passender Software , die nur dort läuft und wo es keine Updates mehr gibt.

Gibt es eventuell pfiffige Möglichkeiten altes OpenGL und neues OpenGl 3.3 per Software wahlweise zu nutzen .
Also
1) Erkennung der Hardware
2) Umschaltung zwischen der alten OpenGl-Programmierung und den neuen Möglichkeiten ,sofern es beim alten OpenGl überhaut Alternaiven gibt.

Gruß

Frank
www.flz-vortex.de

marcov
Beiträge: 1100
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: Lazarus - OpenGL 3.3 Tutorial

Beitrag von marcov »

Zuerst: sehr schöner Tut!

Ich mache viel einfache 2D overlays mit opengl, und habe mich einige der relevante Tutorials angesehen wie "Shapes (Linien und Punkte)", und der logischen Folgenden "Index-Puffer_dynamisch" (Shapes: 1 segment/drawcall, index-puffer: mehrere/drawcall)

Dazu habe ich vielleicht noch etwas interessantes in mein URL Bibliothek, nämlich wie man Linewidth kann man via geom Shader emulieren kann:

https://forum.libcinder.org/topic/smoot ... try-shader

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

Re: Lazarus - OpenGL 3.3 Tutorial

Beitrag von Mathias »

Dazu habe ich vielleicht noch etwas interessantes in mein URL Bibliothek, nämlich wie man Linewidth kann man via geom Shader emulieren kann:

https://forum.libcinder.org/topic/smoot ... try-shader

Dies müsste ich mal genauer angucken, sieht recht interessant aus.


Gibt es eventuell pfiffige Möglichkeiten altes OpenGL und neues OpenGl 3.3 per Software wahlweise zu nutzen .
Im Prinzip ja, aber sowas würde ich mir nicht mehr an tun. Es werden immer weniger PCs, die zu alt sind. Ansonsten ein einfaches if else sollte gehen.

Code: Alles auswählen

  if alt then begin
    glBegin();
  end else begin
    glDrawArrays();
  end;

Noch etwas, unter Linux, kann man OpenGL 3.3 Softwaremässig emulieren, aber die Geschwindigkeit lässt zu wünschen übrig. Für das Tutorial wird es reichen, aber eine komplexe Scene kommt recht ins stottern.


Mit etwas Glück sollte es gehen, wen man im Shader eine ältere Version verlangt.

Code: Alles auswählen

#version 130

Nur wird dann nicht mehr der volle Umfang von OpenGL 3.3 unterstützt.
ZB wird

Code: Alles auswählen

layout (location = 10) in vec3 inPos;
nicht unterstützt.
Dann muss man das mit einer ID lösen, so wie bei den Uniform-Variablen.
So nebenbei, ab OpenGL 4.0, geht layout auch mit Attributen.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

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

Re: Lazarus - OpenGL 3.3 Tutorial

Beitrag von Mathias »

und habe mich einige der relevante Tutorials angesehen wie "Shapes (Linien und Punkte)",

Da habe ich gerade noch einen kleinen Fehler korrigiert, die Vektoren hissen hier Triangeles, obwohl es Linien sind.

Wen jemand solche Fehler sieht, dann wäre es gut, wen er sie melden würde. Somit kann ich das Tutorial verbessern. :wink:
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

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

Re: Lazarus - OpenGL 3.3 Tutorial

Beitrag von Mathias »

Dazu habe ich vielleicht noch etwas interessantes in mein URL Bibliothek, nämlich wie man Linewidth kann man via geom Shader emulieren kann:

https://forum.libcinder.org/topic/smoot ... try-shader

Ich habe da mal was probiert, vielleicht hilft dir dies schon weiter.

https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/15_-_Geometrie-Shader/05_-_GL_TRIANGLE_STRIP_ADJACENCY
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

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

Re: Lazarus - OpenGL 3.3 Tutorial

Beitrag von Mathias »

Das Tutorial ist in der Zwischenzeit um einiges gewachsen: https://wiki.delphigl.com/index.php/Laz ... 3_Tutorial
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

noenglish
Beiträge: 36
Registriert: Di 4. Mai 2010, 09:14
OS, Lazarus, FPC: Win10 64Bit, L: 1.8.4 FPC 3.0.4

Re: Lazarus - OpenGL 3.3 Tutorial

Beitrag von noenglish »

Die Beispiele die ich bis jetzt getestet habe laufen. Die Beispiele welche die unit oglVector verwenden, lassen sich nicht kompilieren. Fehler in der Prozedur:

Code: Alles auswählen

FaceToNormale(var Face, Normal: array of TFace3D);
wir in der Zeile:

Code: Alles auswählen

v.Cross(Face[i, 0], Face[i, 1], Face[i, 2]);

Die Nachricht:
Projekt kompilieren, Ziel: project1.exe: Exit code 1, Fehler: 1, Warnungen: 1
oglvector.pas(721,7) Error: Illegal qualifier
oglvector.pas(722,21) Warning: Local variable "v" does not seem to be initialized

ausgegeben.

Was Übersehe Ich?

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

Re: Lazarus - OpenGL 3.3 Tutorial

Beitrag von Mathias »

Kannst du mir ein Beispiel nennen, das nicht geht.

Welches Lazarus / FPC verwendest du ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

noenglish
Beiträge: 36
Registriert: Di 4. Mai 2010, 09:14
OS, Lazarus, FPC: Win10 64Bit, L: 1.8.4 FPC 3.0.4

Re: Lazarus - OpenGL 3.3 Tutorial

Beitrag von noenglish »

Danke für die schnellle Antwort.
Lazarus v. 1.6.2; FPC v. 3.0.0

Beispiel: 02_-_Shader\40_-_Shader_Mandelbrot.

Aber wie gesagt tritt der Fehler bei allen Beispielen welche die unit oglVector nutzen auf.

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

Re: Lazarus - OpenGL 3.3 Tutorial

Beitrag von Mathias »

Lazarus v. 1.6.2; FPC v. 3.0.0

Es wird mindestens FPC 3.0.2 verlangt, da bei 3.0.0 ein Bug mit Typenhelper vorhanden ist.

Siehe in der Einleitung:
https://wiki.delphigl.com/index.php/Laz ... einrichten
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

noenglish
Beiträge: 36
Registriert: Di 4. Mai 2010, 09:14
OS, Lazarus, FPC: Win10 64Bit, L: 1.8.4 FPC 3.0.4

Re: Lazarus - OpenGL 3.3 Tutorial

Beitrag von noenglish »

Schlafmütze!
Nach dem ich die neueste Release installiert habe funktioniet es.
Vielen Dank für die Hilfe!.

Antworten