Lazarus - OpenGL 3.3 Tutorial: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
Zeile 1: Zeile 1:
 
=Lazarus - OpenGL 3.3 Tutorial=
 
=Lazarus - OpenGL 3.3 Tutorial=
 
==Download==
 
==Download==
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial alle Sourcen]
+
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial alle Sourcen (github)]
* [http://mathias1000.bplaced.net/Tutorial_HTML/OpenGL_3.3/source.zip alle Sourcen]
+
* [http://mathias1000.bplaced.net/Tutorial_HTML/OpenGL_3.3/source.zip alle Sourcen (HTML)]
 
== Einrichten und Einstieg ==
 
== Einrichten und Einstieg ==
 
{|{{Prettytable_B1}} width="100%"
 
{|{{Prettytable_B1}} width="100%"
Zeile 17: Zeile 17:
  
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/01_-_Einrichten_und_Einstieg/00_-_Lazarus_fuer_OpenGL_einrichten source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Einrichten und Einstieg - Context erzeugen|Context erzeugen]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Einrichten und Einstieg - Context erzeugen|Context erzeugen]]
Zeile 25: Zeile 26:
 
Das OpenGL etwas auf den Bildschirm ausgeben kann, wird ein '''Context''', Zeichenfläche gebraucht.
 
Das OpenGL etwas auf den Bildschirm ausgeben kann, wird ein '''Context''', Zeichenfläche gebraucht.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/01_-_Einrichten_und_Einstieg/02_-_Context_erzeugen source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Einrichten und Einstieg - VAO - Daten laden|VAO - Daten laden]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Einrichten und Einstieg - VAO - Daten laden|VAO - Daten laden]]
Zeile 33: Zeile 35:
 
Das OpenGL weis, was ausgegeben werden muss, speichert man die Eckpunkte einer Mesh in eine Vektor-Array.
 
Das OpenGL weis, was ausgegeben werden muss, speichert man die Eckpunkte einer Mesh in eine Vektor-Array.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/01_-_Einrichten_und_Einstieg/04_-_VAO_-_Daten_laden source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Einrichten und Einstieg - Erster Shader|Erster Shader]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Einrichten und Einstieg - Erster Shader|Erster Shader]]
Zeile 42: Zeile 45:
 
Somit stehen einem fast unendliche Effekte zu Verfügung.
 
Somit stehen einem fast unendliche Effekte zu Verfügung.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/01_-_Einrichten_und_Einstieg/06_-_Erster_Shader source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Einrichten und Einstieg - Polygonmodus|Polygonmodus]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Einrichten und Einstieg - Polygonmodus|Polygonmodus]]
Zeile 50: Zeile 54:
 
Die Dreiecke/Linien können als Eckpunkte, Drahtgitter oder Vollflächig ausgegeben werden.
 
Die Dreiecke/Linien können als Eckpunkte, Drahtgitter oder Vollflächig ausgegeben werden.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/01_-_Einrichten_und_Einstieg/08_-_Polygonmodus source]
 
|-
 
|-
 
|}
 
|}
Zeile 66: Zeile 71:
 
Was ist ein Shader und wie lädt man ihn in die Grafikkarte.
 
Was ist ein Shader und wie lädt man ihn in die Grafikkarte.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/02_-_Shader/00_-_Einleitung_und_laden_der_Shader source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Shader - Einfachster Shader|Einfachster Shader]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Shader - Einfachster Shader|Einfachster Shader]]
Zeile 74: Zeile 80:
 
Die minimalste Version eines Shaders.
 
Die minimalste Version eines Shaders.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/02_-_Shader/02_-_Einfachster_Shader source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Shader - Uniform Variablen|Uniform Variablen]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Shader - Uniform Variablen|Uniform Variablen]]
Zeile 82: Zeile 89:
 
Wie kann ich den Ablauf des Shaders von aussen beeinflussen.
 
Wie kann ich den Ablauf des Shaders von aussen beeinflussen.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/02_-_Shader/04_-_Uniform_Variablen source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Shader - Erste Bewegung|Erste Bewegung]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Shader - Erste Bewegung|Erste Bewegung]]
Zeile 90: Zeile 98:
 
Wie bewege ich eine Mesh im Shader.
 
Wie bewege ich eine Mesh im Shader.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/02_-_Shader/06_-_Erste_Bewegung source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Shader - Mehrere Shader|Mehrere Shader]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Shader - Mehrere Shader|Mehrere Shader]]
Zeile 98: Zeile 107:
 
Wie kann ich verschiedene Shader benutzen, da man nicht auf allen Meshes die gleichen Efffekte will.
 
Wie kann ich verschiedene Shader benutzen, da man nicht auf allen Meshes die gleichen Efffekte will.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/02_-_Shader/08_-_Mehrere_Shader source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Shader - Schleifen|Schleifen]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Shader - Schleifen|Schleifen]]
Zeile 106: Zeile 116:
 
Im Shader kann man auch verschiedene Abläufe steuern, die if-Schleife.
 
Im Shader kann man auch verschiedene Abläufe steuern, die if-Schleife.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/02_-_Shader/10_-_Schleifen source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Shader - Geometrie Shader|Geometrie Shader]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Shader - Geometrie Shader|Geometrie Shader]]
Zeile 114: Zeile 125:
 
Ein Zusatz-Shader, der zB. Vektoren verdoppeln kann.
 
Ein Zusatz-Shader, der zB. Vektoren verdoppeln kann.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/02_-_Shader/12_-_Geometrie_Shader source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Shader - Punkte verschieden darstellen|Punkte verschieden darstellen]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Shader - Punkte verschieden darstellen|Punkte verschieden darstellen]]
Zeile 122: Zeile 134:
 
Man kann einen Punkt auf verschiedene Arten darstellen, mit dem Shader eine einfache Sache.
 
Man kann einen Punkt auf verschiedene Arten darstellen, mit dem Shader eine einfache Sache.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/02_-_Shader/14_-_Punkte_verschieden_darstellen source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Shader - Shader Mandelbrot|Shader Mandelbrot]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Shader - Shader Mandelbrot|Shader Mandelbrot]]
Zeile 130: Zeile 143:
 
Mit dem Shader kann man auch ganze Fraktale berechnen.
 
Mit dem Shader kann man auch ganze Fraktale berechnen.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/02_-_Shader/16_-_Shader_Mandelbrot source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Shader - Wichtige Funktionen|Wichtige Funktionen]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Shader - Wichtige Funktionen|Wichtige Funktionen]]
Zeile 135: Zeile 149:
 
|[[Image:Lazarus - OpenGL 3.3 Tutorial - Shader - Wichtige Funktionen.png|128px|right]]  
 
|[[Image:Lazarus - OpenGL 3.3 Tutorial - Shader - Wichtige Funktionen.png|128px|right]]  
 
Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar  
 
Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/02_-_Shader/18_-_Wichtige_Funktionen source]
 
|-
 
|-
 
|}
 
|}
Zeile 150: Zeile 165:
 
Wie gelangen die Daten der Mesh in die Grafikkarte.
 
Wie gelangen die Daten der Mesh in die Grafikkarte.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/03_-_Vertex-Puffer/00_-_Einfachster_Vertex-Puffer source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Vertex-Puffer - Mehrere Vertex-Puffer, Mehrarbige Mesh|Mehrere Vertex-Puffer, Mehrarbige Mesh]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Vertex-Puffer - Mehrere Vertex-Puffer, Mehrarbige Mesh|Mehrere Vertex-Puffer, Mehrarbige Mesh]]
Zeile 158: Zeile 174:
 
Die Vector-Daten können mehr enthalten als nur die Koordinaten, hier sind es die Farben der Face.
 
Die Vector-Daten können mehr enthalten als nur die Koordinaten, hier sind es die Farben der Face.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/03_-_Vertex-Puffer/02_-_Mehrere_Vertex-Puffer,_Mehrarbige_Mesh source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Vertex-Puffer - Vertex-Puffer in 2D|Vertex-Puffer in 2D]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Vertex-Puffer - Vertex-Puffer in 2D|Vertex-Puffer in 2D]]
Zeile 166: Zeile 183:
 
Andere Vertex-Daten anstelle von 3D.
 
Andere Vertex-Daten anstelle von 3D.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/03_-_Vertex-Puffer/04_-_Vertex-Puffer_in_2D source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Vertex-Puffer - Nur eine Array|Nur eine Array]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Vertex-Puffer - Nur eine Array|Nur eine Array]]
Zeile 174: Zeile 192:
 
Man kann Koordianten, Farben, etc., alles in einen Puffer ablegen.
 
Man kann Koordianten, Farben, etc., alles in einen Puffer ablegen.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/03_-_Vertex-Puffer/06_-_Nur_eine_Array source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Vertex-Puffer - Vertex-Daten zur Laufzeit modifizieren|Vertex-Daten zur Laufzeit modifizieren]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Vertex-Puffer - Vertex-Daten zur Laufzeit modifizieren|Vertex-Daten zur Laufzeit modifizieren]]
Zeile 182: Zeile 201:
 
Man kann die Vertex-Daten zu Laufzeit modifizieren und neu in die Grafikkarte laden.
 
Man kann die Vertex-Daten zu Laufzeit modifizieren und neu in die Grafikkarte laden.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/03_-_Vertex-Puffer/08_-_Vertex-Daten_zur_Laufzeit_modifizieren source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Vertex-Puffer - Shapes (Dreiecke)|Shapes (Dreiecke)]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Vertex-Puffer - Shapes (Dreiecke)|Shapes (Dreiecke)]]
Zeile 190: Zeile 210:
 
Man kann die Dreiecke auch zur einer Strip oder Fan zusamenfügen, dies spart Platz im VRAM.
 
Man kann die Dreiecke auch zur einer Strip oder Fan zusamenfügen, dies spart Platz im VRAM.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/03_-_Vertex-Puffer/10_-_Shapes_(Dreiecke) source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Vertex-Puffer - Shapes (Linien und Punkte)|Shapes (Linien und Punkte)]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Vertex-Puffer - Shapes (Linien und Punkte)|Shapes (Linien und Punkte)]]
Zeile 199: Zeile 220:
 
'''GL_QUAD''', '''GL_POLYGON''', so wie im alten OpenGL, gibt es '''nicht''' mehr.
 
'''GL_QUAD''', '''GL_POLYGON''', so wie im alten OpenGL, gibt es '''nicht''' mehr.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/03_-_Vertex-Puffer/12_-_Shapes_(Linien_und_Punkte) source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Vertex-Puffer - DrawArrays|DrawArrays]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Vertex-Puffer - DrawArrays|DrawArrays]]
Zeile 207: Zeile 229:
 
Man kann auch nur einen Teil einer Vertex-Array zeichnen.
 
Man kann auch nur einen Teil einer Vertex-Array zeichnen.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/03_-_Vertex-Puffer/14_-_DrawArrays source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Vertex-Puffer - Indices|Indices]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Vertex-Puffer - Indices|Indices]]
Zeile 215: Zeile 238:
 
Man kann auch eine Liste erstellen und die Reihenfolge der Vertex-Daten selbst betimmen.
 
Man kann auch eine Liste erstellen und die Reihenfolge der Vertex-Daten selbst betimmen.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/03_-_Vertex-Puffer/16_-_Indices source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Vertex-Puffer - Index-Puffer|Index-Puffer]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Vertex-Puffer - Index-Puffer|Index-Puffer]]
Zeile 223: Zeile 247:
 
Auch die Liste der Punkte (Indizien), kann man in einem Puffer ablegen.
 
Auch die Liste der Punkte (Indizien), kann man in einem Puffer ablegen.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/03_-_Vertex-Puffer/18_-_Index-Puffer source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Vertex-Puffer - Index-Puffer dynamisch|Index-Puffer dynamisch]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Vertex-Puffer - Index-Puffer dynamisch|Index-Puffer dynamisch]]
Zeile 231: Zeile 256:
 
Auch der Indizien-Puffer kann man zur Laufzeit modifizieren.
 
Auch der Indizien-Puffer kann man zur Laufzeit modifizieren.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/03_-_Vertex-Puffer/20_-_Index-Puffer_dynamisch source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Vertex-Puffer - Vertex-Puffer auslesen|Vertex-Puffer auslesen]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Vertex-Puffer - Vertex-Puffer auslesen|Vertex-Puffer auslesen]]
Zeile 239: Zeile 265:
 
Ein Vertex-Puffer kann man auch von der Grafikkarte wieder auslesen.
 
Ein Vertex-Puffer kann man auch von der Grafikkarte wieder auslesen.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/03_-_Vertex-Puffer/22_-_Vertex-Puffer_auslesen source]
 
|-
 
|-
 
|}
 
|}
Zeile 254: Zeile 281:
 
Mit eine 4x4 Matrix, kann man sämtliche Bewegungen im Raum darstellen. Verschiebung, Drehung, Skalierung und sogar Perspektive ist mit dieser Matrix möglich.
 
Mit eine 4x4 Matrix, kann man sämtliche Bewegungen im Raum darstellen. Verschiebung, Drehung, Skalierung und sogar Perspektive ist mit dieser Matrix möglich.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/04_-_Matrix/00_-_Was_ist_eine_Matrix source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Matrix - Matrix Rotieren|Matrix Rotieren]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Matrix - Matrix Rotieren|Matrix Rotieren]]
Zeile 262: Zeile 290:
 
Wie drehe ich eine Mesh mit Hilfe einer Matrix.
 
Wie drehe ich eine Mesh mit Hilfe einer Matrix.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/04_-_Matrix/02_-_Matrix_Rotieren source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Matrix - Matrix Verschieben und Multiplizieren|Matrix Verschieben und Multiplizieren]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Matrix - Matrix Verschieben und Multiplizieren|Matrix Verschieben und Multiplizieren]]
Zeile 270: Zeile 299:
 
Verschiedene Matrizen können multiplizert werden, soomit sind mehrere Bewegungen der Mesh möglich.
 
Verschiedene Matrizen können multiplizert werden, soomit sind mehrere Bewegungen der Mesh möglich.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/04_-_Matrix/04_-_Matrix_Verschieben_und_Multiplizieren source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Matrix - Kleines Planetarium|Kleines Planetarium]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Matrix - Kleines Planetarium|Kleines Planetarium]]
Zeile 278: Zeile 308:
 
Ein Planetarium ist eine gute Demonstration, wie man Matrizen multipliziert.
 
Ein Planetarium ist eine gute Demonstration, wie man Matrizen multipliziert.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/04_-_Matrix/06_-_Kleines_Planetarium source]
 
|-
 
|-
 
|}
 
|}
Zeile 293: Zeile 324:
 
Anhand eines Würfels sieht man sehr gut die Räumlichkeit einer Scene.
 
Anhand eines Würfels sieht man sehr gut die Räumlichkeit einer Scene.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/05_-_3D/00_-_Erster-Wuerfel source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - 3D - Polygon - Seite (Backface Culling)|Polygon - Seite (Backface Culling)]]
 
![[Lazarus - OpenGL 3.3 Tutorial - 3D - Polygon - Seite (Backface Culling)|Polygon - Seite (Backface Culling)]]
Zeile 301: Zeile 333:
 
Wie unterbinde ich es, das die Rückseite eines Polygones gerendert wird.
 
Wie unterbinde ich es, das die Rückseite eines Polygones gerendert wird.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/05_-_3D/02_-_Polygon_-_Seite_(Backface_Culling) source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - 3D - Tiefenbuffer|Tiefenbuffer]]
 
![[Lazarus - OpenGL 3.3 Tutorial - 3D - Tiefenbuffer|Tiefenbuffer]]
Zeile 309: Zeile 342:
 
Es sollte nur das gerendert werden, was man auch sieht, verdecktes sollte nicht gerendert werden.
 
Es sollte nur das gerendert werden, was man auch sieht, verdecktes sollte nicht gerendert werden.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/05_-_3D/04_-_Tiefenbuffer source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - 3D - Orthogonalprojektion|Orthogonalprojektion]]
 
![[Lazarus - OpenGL 3.3 Tutorial - 3D - Orthogonalprojektion|Orthogonalprojektion]]
Zeile 317: Zeile 351:
 
Wird meistens in einem CAD gebraucht.
 
Wird meistens in einem CAD gebraucht.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/05_-_3D/06_-_Orthogonalprojektion source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - 3D - Fluchtpunktperspektive (Frustum)|Fluchtpunktperspektive (Frustum)]]
 
![[Lazarus - OpenGL 3.3 Tutorial - 3D - Fluchtpunktperspektive (Frustum)|Fluchtpunktperspektive (Frustum)]]
Zeile 325: Zeile 360:
 
Mit der Fluchtpunktperspektive werden Objekte kleiner je weiter sie von einem weg sind, so wie es in der Realität auch der Fall ist.
 
Mit der Fluchtpunktperspektive werden Objekte kleiner je weiter sie von einem weg sind, so wie es in der Realität auch der Fall ist.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/05_-_3D/08_-_Fluchtpunktperspektive_(Frustum) source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - 3D - Betrachtungs - Fenster (Viewport)|Betrachtungs - Fenster (Viewport)]]
 
![[Lazarus - OpenGL 3.3 Tutorial - 3D - Betrachtungs - Fenster (Viewport)|Betrachtungs - Fenster (Viewport)]]
Zeile 334: Zeile 370:
 
Dies passt man in der Perspektive an.
 
Dies passt man in der Perspektive an.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/05_-_3D/10_-_Betrachtungs_-_Fenster_(Viewport) source]
 
|-
 
|-
 
|}
 
|}
Zeile 349: Zeile 386:
 
Mit Alpha-Blending ist es erst möglich Fensterscheiben oder Bäume mit OpenGL darzustellen.
 
Mit Alpha-Blending ist es erst möglich Fensterscheiben oder Bäume mit OpenGL darzustellen.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/06_-_Alpha_Blending/00_-_Einfaches_Alpha_Blending source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Alpha Blending - Die Reihenfolge ist wichtig|Die Reihenfolge ist wichtig]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Alpha Blending - Die Reihenfolge ist wichtig|Die Reihenfolge ist wichtig]]
Zeile 357: Zeile 395:
 
Bei Alpha-Blendig ist es sehr wichtig, in welcher Reihenfolge die Polygone/Meshes gezeichnet werden. Mit dem Z-Pufer ist s leider '''nicht''' getan.
 
Bei Alpha-Blendig ist es sehr wichtig, in welcher Reihenfolge die Polygone/Meshes gezeichnet werden. Mit dem Z-Pufer ist s leider '''nicht''' getan.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/06_-_Alpha_Blending/02_-_Die_Reihenfolge_ist_wichtig source]
 
|-
 
|-
 
|}
 
|}
Zeile 369: Zeile 408:
 
|[[Image:Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Einfache Beleuchtung.png|128px|right]]  
 
|[[Image:Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Einfache Beleuchtung.png|128px|right]]  
 
Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar  
 
Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/07_-_Beleuchtung/00_-_Einfache_Beleuchtung source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Ambient Light|Ambient Light]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Ambient Light|Ambient Light]]
Zeile 374: Zeile 414:
 
|[[Image:Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Ambient Light.png|128px|right]]  
 
|[[Image:Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Ambient Light.png|128px|right]]  
 
Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar  
 
Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/07_-_Beleuchtung/02_-_Ambient_Light source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Directional Light|Directional Light]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Directional Light|Directional Light]]
Zeile 379: Zeile 420:
 
|[[Image:Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Directional Light.png|128px|right]]  
 
|[[Image:Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Directional Light.png|128px|right]]  
 
Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar  
 
Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/07_-_Beleuchtung/04_-_Directional_Light source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Mehrere Directional Light Quellen|Mehrere Directional Light Quellen]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Mehrere Directional Light Quellen|Mehrere Directional Light Quellen]]
Zeile 384: Zeile 426:
 
|[[Image:Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Mehrere Directional Light Quellen.png|128px|right]]  
 
|[[Image:Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Mehrere Directional Light Quellen.png|128px|right]]  
 
Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar  
 
Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/07_-_Beleuchtung/06_-_Mehrere_Directional_Light_Quellen source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Point Light Kugel|Point Light Kugel]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Point Light Kugel|Point Light Kugel]]
Zeile 389: Zeile 432:
 
|[[Image:Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Point Light Kugel.png|128px|right]]  
 
|[[Image:Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Point Light Kugel.png|128px|right]]  
 
Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar  
 
Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/07_-_Beleuchtung/08_-_Point_Light_Kugel source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Point Light Vertex-Shader|Point Light Vertex-Shader]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Point Light Vertex-Shader|Point Light Vertex-Shader]]
Zeile 394: Zeile 438:
 
|[[Image:Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Point Light Vertex-Shader.png|128px|right]]  
 
|[[Image:Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Point Light Vertex-Shader.png|128px|right]]  
 
Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar  
 
Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/07_-_Beleuchtung/10_-_Point_Light_Vertex-Shader source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Point Light Fragment-Shader|Point Light Fragment-Shader]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Point Light Fragment-Shader|Point Light Fragment-Shader]]
Zeile 399: Zeile 444:
 
|[[Image:Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Point Light Fragment-Shader.png|128px|right]]  
 
|[[Image:Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Point Light Fragment-Shader.png|128px|right]]  
 
Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar  
 
Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/07_-_Beleuchtung/12_-_Point_Light_Fragment-Shader source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Grundlage Spot Licht|Grundlage Spot Licht]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Grundlage Spot Licht|Grundlage Spot Licht]]
Zeile 404: Zeile 450:
 
|[[Image:Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Grundlage Spot Licht.png|128px|right]]  
 
|[[Image:Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Grundlage Spot Licht.png|128px|right]]  
 
Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar  
 
Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/07_-_Beleuchtung/14_-_Grundlage_Spot_Licht source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Spot Light, einfacher Kegel|Spot Light, einfacher Kegel]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Spot Light, einfacher Kegel|Spot Light, einfacher Kegel]]
Zeile 409: Zeile 456:
 
|[[Image:Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Spot Light, einfacher Kegel.png|128px|right]]  
 
|[[Image:Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Spot Light, einfacher Kegel.png|128px|right]]  
 
Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar  
 
Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/07_-_Beleuchtung/16_-_Spot_Light,_einfacher_Kegel source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Spot Light, mit Normale|Spot Light, mit Normale]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Spot Light, mit Normale|Spot Light, mit Normale]]
Zeile 414: Zeile 462:
 
|[[Image:Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Spot Light, mit Normale.png|128px|right]]  
 
|[[Image:Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Spot Light, mit Normale.png|128px|right]]  
 
Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar  
 
Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/07_-_Beleuchtung/18_-_Spot_Light,_mit_Normale source]
 
|-
 
|-
 
|}
 
|}
Zeile 429: Zeile 478:
 
Die Polygone können mit Bilder ( Texturen ) überzogen werden.
 
Die Polygone können mit Bilder ( Texturen ) überzogen werden.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/08_-_Texturen/00_-_Erste_Textur source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Texturen - Mehrere Texturen|Mehrere Texturen]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Texturen - Mehrere Texturen|Mehrere Texturen]]
Zeile 437: Zeile 487:
 
Man kann mehrere Texturen auf dem VRAM ablegen. Und diese bei Bedarf abrufen.
 
Man kann mehrere Texturen auf dem VRAM ablegen. Und diese bei Bedarf abrufen.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/08_-_Texturen/02_-_Mehrere_Texturen source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Texturen - Texturen von BMP|Texturen von BMP]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Texturen - Texturen von BMP|Texturen von BMP]]
Zeile 445: Zeile 496:
 
Texturen können recht einfach von einer Bitmap in das VRAM kopiert werden, es muss nur das format bekannt sein.
 
Texturen können recht einfach von einer Bitmap in das VRAM kopiert werden, es muss nur das format bekannt sein.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/08_-_Texturen/04_-_Texturen_von_BMP source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Texturen - Texturen mit oglTextur|Texturen mit oglTextur]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Texturen - Texturen mit oglTextur|Texturen mit oglTextur]]
Zeile 454: Zeile 506:
 
'''Hinweis:''' Wen jemand ein Format hat, welches nicht erkannt wird, bitte im Forum melden.
 
'''Hinweis:''' Wen jemand ein Format hat, welches nicht erkannt wird, bitte im Forum melden.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/08_-_Texturen/06_-_Texturen_mit_oglTextur source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Texturen - Texturen von XPM|Texturen von XPM]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Texturen - Texturen von XPM|Texturen von XPM]]
Zeile 462: Zeile 515:
 
Dank des '''XPM'''-Format, kann man sehr einfach eine Textur als ASCII-Text erstellen. Es ist '''kein''' Grafikprogramm nötig.
 
Dank des '''XPM'''-Format, kann man sehr einfach eine Textur als ASCII-Text erstellen. Es ist '''kein''' Grafikprogramm nötig.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/08_-_Texturen/08_-_Texturen_von_XPM source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Texturen - Texturen und Matrixen|Texturen und Matrixen]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Texturen - Texturen und Matrixen|Texturen und Matrixen]]
Zeile 470: Zeile 524:
 
Mit einer Matrix ist es möglich, eine Textur auf der Mesh zu skalieren/bewegen.
 
Mit einer Matrix ist es möglich, eine Textur auf der Mesh zu skalieren/bewegen.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/08_-_Texturen/10_-_Texturen_und_Matrixen source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Texturen - Multitexturing|Multitexturing]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Texturen - Multitexturing|Multitexturing]]
Zeile 478: Zeile 533:
 
Man kann mehrere Texturen übereinanderlegen (Multitexturing ).
 
Man kann mehrere Texturen übereinanderlegen (Multitexturing ).
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/08_-_Texturen/12_-_Multitexturing source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Texturen - Filter|Filter]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Texturen - Filter|Filter]]
Zeile 486: Zeile 542:
 
Man kann Texturen auf verschiedene Art darstellen und filtern.
 
Man kann Texturen auf verschiedene Art darstellen und filtern.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/08_-_Texturen/14_-_Filter source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Texturen - Alpha-Textur|Alpha-Textur]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Texturen - Alpha-Textur|Alpha-Textur]]
Zeile 494: Zeile 551:
 
Es ist auch möglich Texturen transparent darzustellen.
 
Es ist auch möglich Texturen transparent darzustellen.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/08_-_Texturen/16_-_Alpha-Textur source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Texturen - Textur-Koordinaten|Textur-Koordinaten]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Texturen - Textur-Koordinaten|Textur-Koordinaten]]
Zeile 502: Zeile 560:
 
Texturen können recht einfach von einer Bitmap in das VRAM kopiert werden, es muss nur das format bekannt sein.
 
Texturen können recht einfach von einer Bitmap in das VRAM kopiert werden, es muss nur das format bekannt sein.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/08_-_Texturen/18_-_Textur-Koordinaten source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Texturen - Texturen Perspektiven-Korrektur|Texturen Perspektiven-Korrektur]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Texturen - Texturen Perspektiven-Korrektur|Texturen Perspektiven-Korrektur]]
Zeile 510: Zeile 569:
 
Dank des '''XPM'''-Format, kann man sehr einfach eine Textur als ASCII-Text erstellen. Es ist '''kein''' Grafikprogramm nötig.
 
Dank des '''XPM'''-Format, kann man sehr einfach eine Textur als ASCII-Text erstellen. Es ist '''kein''' Grafikprogramm nötig.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/08_-_Texturen/20_-_Texturen_Perspektiven-Korrektur source]
 
|-
 
|-
 
|}
 
|}
Zeile 522: Zeile 582:
 
|[[Image:Lazarus - OpenGL 3.3 Tutorial - Framepuffer - In Textur rendern.png|128px|right]]  
 
|[[Image:Lazarus - OpenGL 3.3 Tutorial - Framepuffer - In Textur rendern.png|128px|right]]  
 
Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar  
 
Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/09_-_Framepuffer/00_-_In_Textur_rendern source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Framepuffer - Framepuffer speichern|Framepuffer speichern]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Framepuffer - Framepuffer speichern|Framepuffer speichern]]
Zeile 527: Zeile 588:
 
|[[Image:Lazarus - OpenGL 3.3 Tutorial - Framepuffer - Framepuffer speichern.png|128px|right]]  
 
|[[Image:Lazarus - OpenGL 3.3 Tutorial - Framepuffer - Framepuffer speichern.png|128px|right]]  
 
Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar  
 
Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/09_-_Framepuffer/02_-_Framepuffer_speichern source]
 
|-
 
|-
 
|}
 
|}
Zeile 539: Zeile 601:
 
|[[Image:Lazarus - OpenGL 3.3 Tutorial - Shader Effekte - Blur.png|128px|right]]  
 
|[[Image:Lazarus - OpenGL 3.3 Tutorial - Shader Effekte - Blur.png|128px|right]]  
 
Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar  
 
Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/10_-_Shader_Effekte/00_-_Blur source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Shader Effekte - Sobel|Sobel]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Shader Effekte - Sobel|Sobel]]
Zeile 544: Zeile 607:
 
|[[Image:Lazarus - OpenGL 3.3 Tutorial - Shader Effekte - Sobel.png|128px|right]]  
 
|[[Image:Lazarus - OpenGL 3.3 Tutorial - Shader Effekte - Sobel.png|128px|right]]  
 
Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar  
 
Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/10_-_Shader_Effekte/02_-_Sobel source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Shader Effekte - Kacheln|Kacheln]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Shader Effekte - Kacheln|Kacheln]]
Zeile 552: Zeile 616:
 
Wie drehe ich eine Mesh mit Hilfe einer Matrix.
 
Wie drehe ich eine Mesh mit Hilfe einer Matrix.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/10_-_Shader_Effekte/04_-_Kacheln source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Shader Effekte - Kreis|Kreis]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Shader Effekte - Kreis|Kreis]]
Zeile 560: Zeile 625:
 
Wie drehe ich eine Mesh mit Hilfe einer Matrix.
 
Wie drehe ich eine Mesh mit Hilfe einer Matrix.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/10_-_Shader_Effekte/06_-_Kreis source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Shader Effekte - Hello World|Hello World]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Shader Effekte - Hello World|Hello World]]
Zeile 568: Zeile 634:
 
Wie drehe ich eine Mesh mit Hilfe einer Matrix.
 
Wie drehe ich eine Mesh mit Hilfe einer Matrix.
  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/10_-_Shader_Effekte/08_-_Hello_World source]
 
|-
 
|-
 
|}
 
|}
Zeile 580: Zeile 647:
 
|[[Image:Lazarus - OpenGL 3.3 Tutorial - Versuche - Erste Textur SubImage.png|128px|right]]  
 
|[[Image:Lazarus - OpenGL 3.3 Tutorial - Versuche - Erste Textur SubImage.png|128px|right]]  
 
Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar  
 
Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/90_-_Versuche/00_-_Erste_Textur_SubImage source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Versuche - MipMap|MipMap]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Versuche - MipMap|MipMap]]
Zeile 585: Zeile 653:
 
|[[Image:Lazarus - OpenGL 3.3 Tutorial - Versuche - MipMap.png|128px|right]]  
 
|[[Image:Lazarus - OpenGL 3.3 Tutorial - Versuche - MipMap.png|128px|right]]  
 
Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar  
 
Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/90_-_Versuche/02_-_MipMap source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Versuche - Texturen Perspektiven - Korrektur|Texturen Perspektiven - Korrektur]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Versuche - Texturen Perspektiven - Korrektur|Texturen Perspektiven - Korrektur]]
Zeile 590: Zeile 659:
 
|[[Image:Lazarus - OpenGL 3.3 Tutorial - Versuche - Texturen Perspektiven - Korrektur.png|128px|right]]  
 
|[[Image:Lazarus - OpenGL 3.3 Tutorial - Versuche - Texturen Perspektiven - Korrektur.png|128px|right]]  
 
Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar  
 
Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/90_-_Versuche/04_-_Texturen_Perspektiven_-_Korrektur source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Versuche - MipMap  Kacheln|MipMap  Kacheln]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Versuche - MipMap  Kacheln|MipMap  Kacheln]]
Zeile 595: Zeile 665:
 
|[[Image:Lazarus - OpenGL 3.3 Tutorial - Versuche - MipMap  Kacheln.png|128px|right]]  
 
|[[Image:Lazarus - OpenGL 3.3 Tutorial - Versuche - MipMap  Kacheln.png|128px|right]]  
 
Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar  
 
Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/90_-_Versuche/06_-_MipMap _Kacheln source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Versuche - MipMap|MipMap]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Versuche - MipMap|MipMap]]
Zeile 600: Zeile 671:
 
|[[Image:Lazarus - OpenGL 3.3 Tutorial - Versuche - MipMap.png|128px|right]]  
 
|[[Image:Lazarus - OpenGL 3.3 Tutorial - Versuche - MipMap.png|128px|right]]  
 
Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar  
 
Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/90_-_Versuche/08_-_MipMap source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Versuche - MipMap diskret|MipMap diskret]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Versuche - MipMap diskret|MipMap diskret]]
Zeile 605: Zeile 677:
 
|[[Image:Lazarus - OpenGL 3.3 Tutorial - Versuche - MipMap diskret.png|128px|right]]  
 
|[[Image:Lazarus - OpenGL 3.3 Tutorial - Versuche - MipMap diskret.png|128px|right]]  
 
Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar  
 
Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/90_-_Versuche/10_-_MipMap_diskret source]
 
|-
 
|-
 
![[Lazarus - OpenGL 3.3 Tutorial - Versuche - MipMap diskret-2|MipMap diskret-2]]
 
![[Lazarus - OpenGL 3.3 Tutorial - Versuche - MipMap diskret-2|MipMap diskret-2]]
Zeile 610: Zeile 683:
 
|[[Image:Lazarus - OpenGL 3.3 Tutorial - Versuche - MipMap diskret-2.png|128px|right]]  
 
|[[Image:Lazarus - OpenGL 3.3 Tutorial - Versuche - MipMap diskret-2.png|128px|right]]  
 
Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar  
 
Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar  
 +
* [https://github.com/sechshelme/Lazarus-OpenGL-3.3-Tutorial/tree/master/90_-_Versuche/12_-_MipMap_diskret-2 source]
 
|-
 
|-
 
|}
 
|}
 
[https://wiki.delphigl.com/index.php/Lazarus_-_OpenGL_3.3_Tutorial Inhaltsverzeichnis]
 
[https://wiki.delphigl.com/index.php/Lazarus_-_OpenGL_3.3_Tutorial Inhaltsverzeichnis]

Version vom 21. Januar 2018, 22:36 Uhr

Lazarus - OpenGL 3.3 Tutorial

Download

Einrichten und Einstieg

Link Beschreibung
Lazarus fuer OpenGL einrichten
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Einrichten und Einstieg - Lazarus fuer OpenGL einrichten.png

"Lazarus mit OpenGL 3.3"

Was sind die Voraussetzungen. Und wie richte ich Lazarus ein, das dies mit OpenGL 3.3 funktioniert.


Context erzeugen
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Einrichten und Einstieg - Context erzeugen.png

"Eine Arbeitsfläche erzeugen"

Das OpenGL etwas auf den Bildschirm ausgeben kann, wird ein Context, Zeichenfläche gebraucht.

VAO - Daten laden
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Einrichten und Einstieg - VAO - Daten laden.png

"Erste Vectoren"

Das OpenGL weis, was ausgegeben werden muss, speichert man die Eckpunkte einer Mesh in eine Vektor-Array.

Erster Shader
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Einrichten und Einstieg - Erster Shader.png

"Zeichen Routine"

Bevor OpenGL etwas ausgeben kann, werden die Daten in einem Shader-Programm abgearbeitet. Somit stehen einem fast unendliche Effekte zu Verfügung.

Polygonmodus
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Einrichten und Einstieg - Polygonmodus.png

"Wie sollen die Polygone verarbeitet werden ?"

Die Dreiecke/Linien können als Eckpunkte, Drahtgitter oder Vollflächig ausgegeben werden.

Inhaltsverzeichnis

Shader

Link Beschreibung
Einleitung und laden der Shader
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Shader - Einleitung und laden der Shader.png

"Das Herz von OpenGL 3.3"

Sämtliche Effekt werden hier verarbeitet. Was ist ein Shader und wie lädt man ihn in die Grafikkarte.

Einfachster Shader
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Shader - Einfachster Shader.png

"Einfachste Abbarbeitung"

Die minimalste Version eines Shaders.

Uniform Variablen
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Shader - Uniform Variablen.png

"Äusere Beinflussung"

Wie kann ich den Ablauf des Shaders von aussen beeinflussen.

Erste Bewegung
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Shader - Erste Bewegung.png

"Die Mesh sollte nicht statisch sein"

Wie bewege ich eine Mesh im Shader.

Mehrere Shader
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Shader - Mehrere Shader.png

"Einer ist langweilig"

Wie kann ich verschiedene Shader benutzen, da man nicht auf allen Meshes die gleichen Efffekte will.

Schleifen
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Shader - Schleifen.png

"Nicht immer gleich"

Im Shader kann man auch verschiedene Abläufe steuern, die if-Schleife.

Geometrie Shader
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Shader - Geometrie Shader.png

"Zusätliche geometrische Berechnung"

Ein Zusatz-Shader, der zB. Vektoren verdoppeln kann.

Punkte verschieden darstellen
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Shader - Punkte verschieden darstellen.png

"Ein Pixel ist langweilig"

Man kann einen Punkt auf verschiedene Arten darstellen, mit dem Shader eine einfache Sache.

Shader Mandelbrot
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Shader - Shader Mandelbrot.png

"Jetzt wird es komplex"

Mit dem Shader kann man auch ganze Fraktale berechnen.

Wichtige Funktionen
Schwierigkeitsgrad2 30x30.jpg

Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar

Inhaltsverzeichnis

Vertex-Puffer

Link Beschreibung
Einfachster Vertex-Puffer
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Vertex-Puffer - Einfachster Vertex-Puffer.png

"Mesh Daten"

Wie gelangen die Daten der Mesh in die Grafikkarte.

Mehrere Vertex-Puffer, Mehrarbige Mesh
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Vertex-Puffer - Mehrere Vertex-Puffer, Mehrarbige Mesh.png

"Nicht nur Koordinaten"

Die Vector-Daten können mehr enthalten als nur die Koordinaten, hier sind es die Farben der Face.

Vertex-Puffer in 2D
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Vertex-Puffer - Vertex-Puffer in 2D.png

"Es muss nicht immer 3D sein"

Andere Vertex-Daten anstelle von 3D.

Nur eine Array
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Vertex-Puffer - Nur eine Array.png

"Alles zusammen"

Man kann Koordianten, Farben, etc., alles in einen Puffer ablegen.

Vertex-Daten zur Laufzeit modifizieren
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Vertex-Puffer - Vertex-Daten zur Laufzeit modifizieren.png

"Es werd dynamisch"

Man kann die Vertex-Daten zu Laufzeit modifizieren und neu in die Grafikkarte laden.

Shapes (Dreiecke)
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Vertex-Puffer - Shapes (Dreiecke).png

"Nicht nur einzeln Dreiecke"

Man kann die Dreiecke auch zur einer Strip oder Fan zusamenfügen, dies spart Platz im VRAM.

Shapes (Linien und Punkte)
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Vertex-Puffer - Shapes (Linien und Punkte).png

"Nicht nur Dreiecke"

Ein Vektor-Puffer kann auch aus Linien oder Punkte bestehen. GL_QUAD, GL_POLYGON, so wie im alten OpenGL, gibt es nicht mehr.

DrawArrays
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Vertex-Puffer - DrawArrays.png

"Nicht immer am Stück"

Man kann auch nur einen Teil einer Vertex-Array zeichnen.

Indices
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Vertex-Puffer - Indices.png

"Eigene Reihenfolge"

Man kann auch eine Liste erstellen und die Reihenfolge der Vertex-Daten selbst betimmen.

Index-Puffer
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Vertex-Puffer - Index-Puffer.png

"Indizien im Puffer"

Auch die Liste der Punkte (Indizien), kann man in einem Puffer ablegen.

Index-Puffer dynamisch
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Vertex-Puffer - Index-Puffer dynamisch.png

"Indizien dynamisch"

Auch der Indizien-Puffer kann man zur Laufzeit modifizieren.

Vertex-Puffer auslesen
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Vertex-Puffer - Vertex-Puffer auslesen.png

"Nicht nur schreiben"

Ein Vertex-Puffer kann man auch von der Grafikkarte wieder auslesen.

Inhaltsverzeichnis

Matrix

Link Beschreibung
Was ist eine Matrix
Schwierigkeitsgrad2 30x30.jpg

"Bewegung im Raum"

Mit eine 4x4 Matrix, kann man sämtliche Bewegungen im Raum darstellen. Verschiebung, Drehung, Skalierung und sogar Perspektive ist mit dieser Matrix möglich.

Matrix Rotieren
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Matrix - Matrix Rotieren.png

"Drehung"

Wie drehe ich eine Mesh mit Hilfe einer Matrix.

Matrix Verschieben und Multiplizieren
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Matrix - Matrix Verschieben und Multiplizieren.png

"Mehrere Matrizen"

Verschiedene Matrizen können multiplizert werden, soomit sind mehrere Bewegungen der Mesh möglich.

Kleines Planetarium
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Matrix - Kleines Planetarium.png

"Planetarium"

Ein Planetarium ist eine gute Demonstration, wie man Matrizen multipliziert.

Inhaltsverzeichnis

3D

Link Beschreibung
Erster-Wuerfel
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - 3D - Erster-Wuerfel.png

"Es werde 3D"

Anhand eines Würfels sieht man sehr gut die Räumlichkeit einer Scene.

Polygon - Seite (Backface Culling)
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - 3D - Polygon - Seite (Backface Culling).png

"Alles ist zu viel"

Wie unterbinde ich es, das die Rückseite eines Polygones gerendert wird.

Tiefenbuffer
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - 3D - Tiefenbuffer.png

"Nur Vorn"

Es sollte nur das gerendert werden, was man auch sieht, verdecktes sollte nicht gerendert werden.

Orthogonalprojektion
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - 3D - Orthogonalprojektion.png

"Ortografisch"

Wird meistens in einem CAD gebraucht.

Fluchtpunktperspektive (Frustum)
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - 3D - Fluchtpunktperspektive (Frustum).png

"Vorn ist grösser"

Mit der Fluchtpunktperspektive werden Objekte kleiner je weiter sie von einem weg sind, so wie es in der Realität auch der Fall ist.

Betrachtungs - Fenster (Viewport)
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - 3D - Betrachtungs - Fenster (Viewport).png

"Nicht mehr verzerrt"

Ein Quadrat sollte ein Quadrat bleiben, auch wen das Ausgabefenster nicht Quadratisch ist. Dies passt man in der Perspektive an.

Inhaltsverzeichnis

Alpha Blending

Link Beschreibung
Einfaches Alpha Blending
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Alpha Blending - Einfaches Alpha Blending.png

"Es werde transparent"

Mit Alpha-Blending ist es erst möglich Fensterscheiben oder Bäume mit OpenGL darzustellen.

Die Reihenfolge ist wichtig
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Alpha Blending - Die Reihenfolge ist wichtig.png

"Die Reihenfolge ist wichtig"

Bei Alpha-Blendig ist es sehr wichtig, in welcher Reihenfolge die Polygone/Meshes gezeichnet werden. Mit dem Z-Pufer ist s leider nicht getan.

Inhaltsverzeichnis

Beleuchtung

Link Beschreibung
Einfache Beleuchtung
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Einfache Beleuchtung.png

Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar

Ambient Light
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Ambient Light.png

Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar

Directional Light
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Directional Light.png

Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar

Mehrere Directional Light Quellen
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Mehrere Directional Light Quellen.png

Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar

Point Light Kugel
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Point Light Kugel.png

Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar

Point Light Vertex-Shader
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Point Light Vertex-Shader.png

Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar

Point Light Fragment-Shader
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Point Light Fragment-Shader.png

Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar

Grundlage Spot Licht
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Grundlage Spot Licht.png

Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar

Spot Light, einfacher Kegel
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Spot Light, einfacher Kegel.png

Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar

Spot Light, mit Normale
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Beleuchtung - Spot Light, mit Normale.png

Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar

Inhaltsverzeichnis

Texturen

Link Beschreibung
Erste Textur
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Texturen - Erste Textur.png

"Es gebe Bilder"

Die Polygone können mit Bilder ( Texturen ) überzogen werden.

Mehrere Texturen
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Texturen - Mehrere Texturen.png

"Mehrer Texturen"

Man kann mehrere Texturen auf dem VRAM ablegen. Und diese bei Bedarf abrufen.

Texturen von BMP
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Texturen - Texturen von BMP.png

"Bilder direkt aus Bitmap"

Texturen können recht einfach von einer Bitmap in das VRAM kopiert werden, es muss nur das format bekannt sein.

Texturen mit oglTextur
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Texturen - Texturen mit oglTextur.png

"Es gibt viele Formate"

Da es sehr viele Formate gibt, habe ich eine Klasse geschrieben, welche einem die Arbeit der Erkennung abnimmt. Hinweis: Wen jemand ein Format hat, welches nicht erkannt wird, bitte im Forum melden.

Texturen von XPM
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Texturen - Texturen von XPM.png

"Texturen als Text"

Dank des XPM-Format, kann man sehr einfach eine Textur als ASCII-Text erstellen. Es ist kein Grafikprogramm nötig.

Texturen und Matrixen
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Texturen - Texturen und Matrixen.png

"Bewegte Textur"

Mit einer Matrix ist es möglich, eine Textur auf der Mesh zu skalieren/bewegen.

Multitexturing
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Texturen - Multitexturing.png

"Huckepack"

Man kann mehrere Texturen übereinanderlegen (Multitexturing ).

Filter
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Texturen - Filter.png

"Filter"

Man kann Texturen auf verschiedene Art darstellen und filtern.

Alpha-Textur
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Texturen - Alpha-Textur.png

"Es werde Transparent"

Es ist auch möglich Texturen transparent darzustellen.

Textur-Koordinaten
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Texturen - Textur-Koordinaten.png

"Bilder direkt aus Bitmap"

Texturen können recht einfach von einer Bitmap in das VRAM kopiert werden, es muss nur das format bekannt sein.

Texturen Perspektiven-Korrektur
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Texturen - Texturen Perspektiven-Korrektur.png

"Texturen als Text"

Dank des XPM-Format, kann man sehr einfach eine Textur als ASCII-Text erstellen. Es ist kein Grafikprogramm nötig.

Inhaltsverzeichnis

Framepuffer

Link Beschreibung
In Textur rendern
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Framepuffer - In Textur rendern.png

Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar

Framepuffer speichern
Schwierigkeitsgrad2 30x30.jpg
Lazarus - OpenGL 3.3 Tutorial - Framepuffer - Framepuffer speichern.png

Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar

Inhaltsverzeichnis

Shader Effekte

Link Beschreibung
Blur
Schwierigkeitsgrad2 30x30.jpg

Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar

Sobel
Schwierigkeitsgrad2 30x30.jpg

Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar

Kacheln
Schwierigkeitsgrad2 30x30.jpg

"Drehung"

Wie drehe ich eine Mesh mit Hilfe einer Matrix.

Kreis
Schwierigkeitsgrad2 30x30.jpg

"Drehung"

Wie drehe ich eine Mesh mit Hilfe einer Matrix.

Hello World
Schwierigkeitsgrad2 30x30.jpg

"Drehung"

Wie drehe ich eine Mesh mit Hilfe einer Matrix.

Inhaltsverzeichnis

Versuche

Link Beschreibung
Erste Textur SubImage
Schwierigkeitsgrad2 30x30.jpg

Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar

MipMap
Schwierigkeitsgrad2 30x30.jpg

Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar

Texturen Perspektiven - Korrektur
Schwierigkeitsgrad2 30x30.jpg

Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar

MipMap Kacheln
Schwierigkeitsgrad2 30x30.jpg

Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar

MipMap
Schwierigkeitsgrad2 30x30.jpg

Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar

MipMap diskret
Schwierigkeitsgrad2 30x30.jpg

Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar

MipMap diskret-2
Schwierigkeitsgrad2 30x30.jpg

Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar Kommentar

Inhaltsverzeichnis