fließende Flüsse

Für Fragen von Einsteigern und Programmieranfängern...
landvogt
Beiträge: 13
Registriert: So 9. Nov 2014, 22:55

fließende Flüsse

Beitrag von landvogt »

Hallo zusammen,

ich will ein kleines game entwickeln, hauptscreen soll eine Europakarte darstellen, und nun würde ich gerne die bereits auf der Karte eingezeichneten Flüsse animieren.

Würde gerne , um das ganze nicht ausufern zu lassen (cpu auslastung, code grösse etc) lediglich etwas colorcycling betreiben wollen.

Also die Flüsse würde ich zb. gerne in sagen wir 20 verschiedenen blautönen auf die Map zeichnen und dann eben ne Art Welle durch jeden Fluss durch colorcycling dieser Farben etwas aufpeppen.

Nun will ich nicht! für jeden Fluss durch riesige Rechtecksflächen (da Flüsse auf karten ja recht lange dünne mäandernde Objekte sind) definierte Formen manipulieren, sondern eben nur durch Palettencycling etwas "Fluss" erzeugen....

Hab das vor 20 Jahren mit Pascal und der selber geschriebenen rgb-Funktion über port[] anweisungen recht simpel gemacht , sah dafür gut aus .

Hat jemand einen Tipp wie das am effizientesten zu realisieren ist mit den heutigen BildFormaten und in Lazarus ?
Ich weiss das gif das kann, aber dafür müsste ich wieder zig Fluss/Seen - gifs erzeugen und animieren ... :(

Wie gesagt mir wäre wichtig, wenn ich auf zeichenfunktionen komplett verzichten könnte, da die ich grosse europakarte inklusive Gewässer gerne einfach einmalig im Zeichenprogramm erstellen würde. und eben dann die 20 Blautöne "global" lediglich durchcyclen möchte ...

auch würde mich interessieren welche unit dafür geeignet ist ... (und wie schaut das mit directx aus ?)

Weiss jemand Rat ?

Danke!

Gruss landvogt

Komoluna
Beiträge: 565
Registriert: So 26. Aug 2012, 09:03
OS, Lazarus, FPC: Windows(10), Linux(Arch)
CPU-Target: 64Bit

Re: fließende Flüsse

Beitrag von Komoluna »

Ich kann OpenGl nur wärmstens dafür empfehlen.
http://wiki.delphigl.com/index.php/Hauptseite
Da findest du genug Tutorials um dein Problem zu lösen.

MFG

Komoluna
Programmer: A device to convert coffee into software.

Rekursion: siehe Rekursion.

landvogt
Beiträge: 13
Registriert: So 9. Nov 2014, 22:55

Re: fließende Flüsse

Beitrag von landvogt »

Dankeschön !

Hab davon schon mal gehört, werd mich jetzt darin vertiefen.

THX.

Komoluna
Beiträge: 565
Registriert: So 26. Aug 2012, 09:03
OS, Lazarus, FPC: Windows(10), Linux(Arch)
CPU-Target: 64Bit

Re: fließende Flüsse

Beitrag von Komoluna »

OpenGL ist anfangs ein wenig verwirrend aber extrem nützlich.

MFG

Komoluna
Programmer: A device to convert coffee into software.

Rekursion: siehe Rekursion.

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

Re: fließende Flüsse

Beitrag von Mathias »

Ich würde dies auch mit OpenGL lösen.

Für die Flüsse würde ich Texturen mit Alphablending verwenden.
Du machst verschiedene Texturen mit verschiedenen blau, das Ufer währe dann transparent.
Mit einem Timer wechselst du dann die Texturen.
Brauchst fast keine CPU-Leistung, da dies alles die Grafikkarte übernimmt.

Wen du dich für OpenGL entscheidest, würde ich die Version 3.3. nehmen, diese ist zeitgemäss.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

landvogt
Beiträge: 13
Registriert: So 9. Nov 2014, 22:55

Re: fließende Flüsse

Beitrag von landvogt »

Vielen Dank euch für die Mühe und die guten Ratschläge, habt mir ein großes Stück weitergeholfen und jede Menge Zeit erspart !

Danke

Gruss Landvogt

Komoluna
Beiträge: 565
Registriert: So 26. Aug 2012, 09:03
OS, Lazarus, FPC: Windows(10), Linux(Arch)
CPU-Target: 64Bit

Re: fließende Flüsse

Beitrag von Komoluna »

gern geschehen, dafür gibts ja solche Foren.

MFG

Komluna
Programmer: A device to convert coffee into software.

Rekursion: siehe Rekursion.

Komoluna
Beiträge: 565
Registriert: So 26. Aug 2012, 09:03
OS, Lazarus, FPC: Windows(10), Linux(Arch)
CPU-Target: 64Bit

Re: fließende Flüsse

Beitrag von Komoluna »

gern geschehen, dafür gibts ja solche Foren.

MFG

Komoluna
Programmer: A device to convert coffee into software.

Rekursion: siehe Rekursion.

landvogt
Beiträge: 13
Registriert: So 9. Nov 2014, 22:55

Re: fließende Flüsse

Beitrag von landvogt »

Bin schon weiter bei der OpenGL Syntax, beim Üben mit Texturen (Laden einer TGA Datei) meldet Lazarus jedoch den Fehler:
GL_BGR und GL_BGRA nicht bekannt ... anscheinend veraltete OpenGL Ver.

Wie genau update ich nun meine OpenGl Version auf 3.3 (oder höher ? soll ja schon 4.0 geben) unter LAZARUS ?

Habs trotz der Tutorials auf der Delphi Seite nicht verstanden ...

PS: ist OpenGL eigentlich "free", also wäre eine kommerzielle Nutzung des fertigen Spiels überhaupt möglich ?


Gruss Landvogt

landvogt
Beiträge: 13
Registriert: So 9. Nov 2014, 22:55

Re: fließende Flüsse

Beitrag von landvogt »

Habe eben noch versucht die downgeloadete dglOpenGL.pas (Ver. 4.4) als unit einzubinden, kommt jedoch corruption fehler/warnung EAccesViolation...

Hab die dglOpenGl.pas kompiliert und die entstandenen dglOpenGL.ppu und dglOpenGL.o in die /lib Verzeichnisse sowohl des OpenGL Ordners von Lazarus als auch meines Projekts kopiert...
beim Starten dann : SIGSEGV - Fehler

Irgendetwas mache ich wohl grundlegend falsch.

Wäre sehr dankbar für Hilfe

Gruss Landvogt

Philos
Beiträge: 43
Registriert: Mo 3. Mär 2014, 16:06
OS, Lazarus, FPC: Ubuntu Linux 14.04, Windows 7/8, Lazarus 1.2.2, Delphi XE5
CPU-Target: amd64
Wohnort: Rostock
Kontaktdaten:

Re: fließende Flüsse

Beitrag von Philos »

Zu der Lizenzfrage kann ich sagen: Ja, die Nutzung ist kein Problem (http://www.sgi.com/tech/opengl/?/license.html)

Zu deinem Einrichtungsproblem: Hast du denn überhaupt das OpenGL-Package schon richtig eingerichtet in Lazarus(wie unter http://wiki.freepascal.org/OpenGL_Tutorial beschrieben)? Dann müsstest du ein TOpenGLControl in der Komponenentenleiste zur Verfügung haben. Unter einem eigenen Reiter "opengl".
((2*b) || !(to_be)) ... that's the question.

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

Re: fließende Flüsse

Beitrag von Mathias »

@landvogt

Da du schon, mit Texturen am basteln bist, hast du es mit den Shadern und VertexBuffern etc. schon kapiert ?

Oder brauchst du noch ein bisschen Hilfe ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Komoluna
Beiträge: 565
Registriert: So 26. Aug 2012, 09:03
OS, Lazarus, FPC: Windows(10), Linux(Arch)
CPU-Target: 64Bit

Re: fließende Flüsse

Beitrag von Komoluna »

Ich glaube in der dgl Tuorial Reihe kommen erstmal Texturen und dann shader.
Ob es zu VBOs überhaupt ein Tut gibt weiß ich nicht.

MFG

Komoluna
Programmer: A device to convert coffee into software.

Rekursion: siehe Rekursion.

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

Re: fließende Flüsse

Beitrag von Mathias »

Ich glaube in der dgl Tuorial Reihe kommen erstmal Texturen und dann shader.
Ohne Shader geht nichts in OpenGL 3.3
Ob es zu VBOs überhaupt ein Tut gibt weiß ich nicht.
Da hast du leider recht, es gibt kein Tutorial für Lazarus/Delphi.

Aber ich hätte Beispiel Code dafür, wen Interesse dafür vorhanden ist.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

landvogt
Beiträge: 13
Registriert: So 9. Nov 2014, 22:55

Re: fließende Flüsse

Beitrag von landvogt »

Erstmal Danke für eure Antworten. :wink:

Habs nun endlich geschafft den Reiter "openGL" zu erzeugen. Juhu.

Sehr hilfreich war das Tutorial in meinen Augen nicht. Der einzige Satz dazu war ja nur :

" The Lazarus Component Library can be used with OpenGL too. Lazarus includes a TOpenGLControl - a LCL control with an OpenGL context. The lazarus package LazOpenGLContext can be found lazarus/components/opengl/lazopenglcontext.lpk. An example can be found in lazarus/examples/openglcontrol/openglcontrol_demo.lpi." Naja ...

Das Beispiel funktioniert problemlos, verstehe auch recht gut wie da Primitiven, Texturen etc. manipuliert werden.

Die Konstanten GL_BGRA und GL_BGR kennt er aber nach wie vor nicht. Brauch die aber doch für die TGA files, will keine PNGs wie im Beispiel benutzen ...

Die Unit GL.pp im Ordner \fpc\2.6.4\source\packages\openGL\src\ ist immer noch die aus dem Jahr 2000 ...
Wollte die Werte von GL_BGRA und GL_BGR schon manuell als hex code bei const da eintragen, habs aber gelassen, funktioniert wahrscheinlich eh nicht.

Wie komm ich jetzt an die aktuellen Units (GL.pp etc ver. 3.3 oder höher) ?

Oder liegt ein Denkfehler meinerseits vor?

Gruss Landvogt

Antworten