Lazarus - OpenGL 3.3 Tutorial - Einrichten und Einstieg - Lazarus fuer OpenGL einrichten: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
K
(Einleitung)
 
Zeile 10: Zeile 10:
 
glEnd</syntaxhighlight>
 
glEnd</syntaxhighlight>
 
und fertig.<br>
 
und fertig.<br>
Neu muss man sich mit Shadern und Vertex-Buffern auseinandersetzen.<br>
+
Jetzt muss man sich mit Shadern und Vertex-Buffern auseinandersetzen.<br>
Auch muss man sich jetzt selbst um Matrizen und Beleuchtung kümmern.<br>
+
Auch muss man sich selbst um die Matrizen und die Beleuchtung kümmern.<br>
 
<br>
 
<br>
 
Aber dafür ist die Belohnung sehr gross, man ist sehr flexibel und man kann (fast) alles machen, was Effekte anbelangt.<br>
 
Aber dafür ist die Belohnung sehr gross, man ist sehr flexibel und man kann (fast) alles machen, was Effekte anbelangt.<br>
 
Früher war man einfach auf die Fixed-Function-Pipeline der Grafikkarte angewiesen und jede war etwas anders.<br>
 
Früher war man einfach auf die Fixed-Function-Pipeline der Grafikkarte angewiesen und jede war etwas anders.<br>
Wenn eine Karte nur zwei Beleuchtungen hatte, dann hatte sie nur zwei.<br>
+
Wenn eine Karte nur zwei Lichter hatte, dann hatte sie nur zwei.<br>
 
Da man es aber jetzt selbst macht, kann man fast beliebig viel machen, egal ob diffus, etc.<br>
 
Da man es aber jetzt selbst macht, kann man fast beliebig viel machen, egal ob diffus, etc.<br>
 
<br>
 
<br>
 
Ich hoffe, mit diesem Tutorial wird der eine oder andere für OpenGL 3.3 begeistert werden.<br>
 
Ich hoffe, mit diesem Tutorial wird der eine oder andere für OpenGL 3.3 begeistert werden.<br>
Wenn man diesen Einstieg mal geschafft hat, wird man auch mit höheren Versionen klarkommen.<br>
+
Wenn man diesen Einstieg mal geschafft hat, wird man auch mit den höheren Versionen klarkommen.<br>
 
<br>
 
<br>
 
Auf der Hauptseite werde ich noch ein Package veröffentlichen, welches einem den Einstieg sehr einfach macht.<br>
 
Auf der Hauptseite werde ich noch ein Package veröffentlichen, welches einem den Einstieg sehr einfach macht.<br>
Zeile 41: Zeile 41:
 
Das Tutorial sollte unter Linux und Windows laufen, auf dem Mac habe ich es nicht probiert.<br>
 
Das Tutorial sollte unter Linux und Windows laufen, auf dem Mac habe ich es nicht probiert.<br>
 
<br>
 
<br>
Wenn Lazarus bei der Neukompilierung unter Linux Probleme macht, könnte Folgendes das Problem sein.<br>
+
Wenn Lazarus bei der Neukompilierung unter Linux Probleme macht, könnte Folgendes das Problem sein:<br>
 
Unter auf Debian oder Ubuntu basierenden Linux-Distributionen muss evtl. noch Folgendes installiert werden.<br>
 
Unter auf Debian oder Ubuntu basierenden Linux-Distributionen muss evtl. noch Folgendes installiert werden.<br>
 
<syntaxhighlight lang="pascal">sudo apt-get install freeglut3-dev</syntaxhighlight>
 
<syntaxhighlight lang="pascal">sudo apt-get install freeglut3-dev</syntaxhighlight>
Zeile 72: Zeile 72:
  
 
<br>Autor: [[Mathias]]
 
<br>Autor: [[Mathias]]
 +
 
== Siehe auch ==
 
== Siehe auch ==
 
* Übersichtseite [[Lazarus - OpenGL 3.3 Tutorial]]
 
* Übersichtseite [[Lazarus - OpenGL 3.3 Tutorial]]

Aktuelle Version vom 2. Dezember 2019, 10:34 Uhr

Lazarus - OpenGL 3.3 Tutorial - Einrichten und Einstieg - Lazarus fuer OpenGL einrichten.png

Einrichten und Einstieg - Lazarus fuer OpenGL einrichten

Einleitung

Vorwort:

OpenGL 3.3 scheint auf den ersten Blick viel komplizierter als das alte OpenGL.
Man wird von Anfang an mit vielem Neuen konfrontiert.
Früher konnte man einfach

glBegin(...
..
glEnd

und fertig.
Jetzt muss man sich mit Shadern und Vertex-Buffern auseinandersetzen.
Auch muss man sich selbst um die Matrizen und die Beleuchtung kümmern.

Aber dafür ist die Belohnung sehr gross, man ist sehr flexibel und man kann (fast) alles machen, was Effekte anbelangt.
Früher war man einfach auf die Fixed-Function-Pipeline der Grafikkarte angewiesen und jede war etwas anders.
Wenn eine Karte nur zwei Lichter hatte, dann hatte sie nur zwei.
Da man es aber jetzt selbst macht, kann man fast beliebig viel machen, egal ob diffus, etc.

Ich hoffe, mit diesem Tutorial wird der eine oder andere für OpenGL 3.3 begeistert werden.
Wenn man diesen Einstieg mal geschafft hat, wird man auch mit den höheren Versionen klarkommen.

Auf der Hauptseite werde ich noch ein Package veröffentlichen, welches einem den Einstieg sehr einfach macht.
Dort sind fertige Shader und Units für Matrizen, Texturen, Vertex-Puffer, etc. vorhanden.


Voraussetzung:

  • FPC 3.0.2 oder höher.
  • Lazarus 1.6.4 oder höher.
  • Mindestens OpenGL 3.3 fähige Grafikkarte.
  • Grundkenntnisse mit FPC und Lazarus.
  • Grundkenntnisse C/C++ für die Shader-Programmierung.


Wen die Grafikkarte zu alt ist, gibt es trotzdem eine Lösung. Mit Mesa ab 17.1 ist es möglich im Software-Renderer OpenGL zu emulieren.
Dies ist gähnend langsam, aber für die ersten Gehversuche im Tutorial reicht dies. ( Getestet mit Linux Mint 64Bit 18.x )

Installation:

FPC und Lazarus installieren.

Bei Lazarus muss unter "Package --> Installierte Packages einrichten... --> Verfügbar für Installation", zuerst das Package LazOpenGLContext x.x.x installiert werden.

Das Tutorial sollte unter Linux und Windows laufen, auf dem Mac habe ich es nicht probiert.

Wenn Lazarus bei der Neukompilierung unter Linux Probleme macht, könnte Folgendes das Problem sein:
Unter auf Debian oder Ubuntu basierenden Linux-Distributionen muss evtl. noch Folgendes installiert werden.

sudo apt-get install freeglut3-dev

Somit sollten alle Beispiele kompilierbar sein.

Die Sourcen zum Tutorial, kann man alle auf der Hauptseite herunterladen.
Es ist eine Zip, welche auch alle Bibliotheken (Units) enthält.
Ich habe eine Package Namens ogl_package.lpk mit den benötigten Dateien erstellt, sie befindet sich im gleiche Ordner wie die Units. Ich empfehle es, die Package zu installieren,
obwohl man auch in den Projekte den Unit-Pfad anpassen kann, nur muss man dann in allen Projekten die Pfade anpassen, wen man mal die Package verschiebt/umbenennt.
Für die ogl-Package ist noch Package BRGABitmap erforderlich, diese lässt sich bequem über "Package --> Online-Package-Manger --> BGRABitmap" installieren.

Die wichtigsten Funktionen der ogl-Package:

  • dglOpenGL: Der Header für die OpenGL-Funktionen.
  • oglContex: Erzeugt einen Zeichencontext, ohne diesem ist keine OpenGL-Ausgabe möglich.
  • oglShader: Enthält Funktionen um den Shader-Code in die Grafikkarte zu laden.
  • oglVertex: Verschiedene Vertex-Deklarationen und Funktionen/Berechnungen.
  • oglMatrix: Verschiedene Matrix-Deklarationen und Funktionen/Berechnungen.
  • oglTextur: Funktionen für das Hochladen von Texturen.



Es sind viele OpenGL spezifische Sachen ausserhalb von Form deklariert, bei einer sauberen objektorientierten Programmierung ist dies nicht üblich.
Hier wurde es einfachheitshalber der Übersichtlichkeit gemacht.

Wen man weis, wie man mit Delphi einen OpenGL-Context erzeugt, sollte dieses Tutorial auch mit Delphi funktionieren.

Wenn Fehler gefunden werden, dann bitte hier melden:

oder


Autor: Mathias

Siehe auch