PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Erstes OpenGL-Projekt: Feuer-Partikelsystem [Download]



Ynnus
24.02.2005, 16:03
Hallöchen,

nach einigen Tagen Einarbeitung in OpenGL würde ich jetzt hier gern mein erstes Projekt in OGL präsentieren. Es handelt sich dabei um ein Partikelsystem welches eine Art Feuer simulieren soll. Man kann im Programm mittels Cursortasten verschiedene Attribute wie "Vertikaler Flammenausschlag", "Flammengröße" oder "Windeinfluss" regeln.

Geschrieben wurde dieses kleine Programm in C, mit Hilfe der WinAPI und OpenGL. (Läuft somit leider vorerst nur unter Windows-Systemen)

Ich würde mich dennoch freuen wenn ihr mir feedback zu meinem ersten OpenGL Programm geben würdet. Vielleicht gibt's bei euch auch irgendwelche Bugs welche es noch auszubauen gilt? So wirklich erprobt bin ich in OpenGL ja nun noch nicht.^^
Es gibt derzeit auch noch keine frame-basierte darstellung, also könnte es auf den verschiedenen Systemen mal schneller und mal langsamer laufen. Vielleicht könnte es auch jemand mit schlechterer Grafikkarte und langsamerem System testen, ob noch alles gut läuft und welch ein System man da mindestens brauch um sich das Programm anzusehen. Benötigt wird auf jeden Fall erstmal eine Grafikkarte die OpenGL unterstützt (sollte aber auch bei mittelmäßigen Karten schon der Fall sein).

Zur Steuerung:
Per Hoch- und Runter-Cursor wählt man das gewünschte Attribut aus, per Rechts- und Links-Cursor verändert man diesen Parameter. Etwa die Transparents der Flammen oder den Einfallswinkel des Windes.
Zum Beenden einfach auf [ESC] drücken.

So, öhm, ja, der Download: http://derfeind2k.de/daten/feuer-partikelsystem.rar

mfg.

Sunny

Crash-Override
24.02.2005, 16:15
OpenGL hab ich ganz sicher installiert, aber dennoch will er eine GLAUX.DLL haben....

Ynnus
24.02.2005, 17:01
OpenGL hab ich ganz sicher installiert, aber dennoch will er eine GLAUX.DLL haben....
Ahja, sorry, die Glaux.dll... Kann man sich u.a. hier downloaden: http://sirnonamesplace.de/files/glaux.dll
Einfach ins Verzeichnis der Exe kopieren, sollte dann klappen. Ansonsten in den System32 Ordner und danach nach Belieben wieder löschen. ;)

Rolus
24.02.2005, 20:15
Sieht doch schon sehr nett aus. Der Übergang vom Feuer ins Schwarze ist nicht immer ganz sauber, aber ich denke man erkennt was gemeint ist. Für das erste Projekt auf alle Fälle gar nicht schlecht. Bugs habe ich btw eigentlich nicht entdecken können.

freundliche Grüße, Rolus

Dingsi
24.02.2005, 20:23
Hey, das sieht verdammt nett aus! Am Anfang hab ich zwar gedacht "wtf? das soll ne flamme sein?" weil da nur leichte gelbe Schatten waren, die durch schwarze Ränder zerschnitten wurden, bis ich dann gemerkt hab, dass man die Transparenz hoch/runter (auf 1.0) stellen musste damits wie ne Flamme aussieht.
Aber danach, einfach echt geil. :A.

Mir sind keine Bugs aufgefallen, bis auf halt den schwarzen Rand der sich manchmal abhebt.

Ynnus
24.02.2005, 23:49
Vielen Dank erstmal. Aber so ganz hab ich nicht verstanden, was ihr mit dem schwarzen Rand oder unsauberem übergang meint. Die Flammen werden erst bei nahezu voller Transparents ausgeblendet und haben somit einen nahezu vollkommenen Übergang ins schwarze. Oder meint ihr den Rand der Flammenpartikel? Das es manchmal etwas körnig aussieht, dadurch, dass sich die Teilchen von den anderen absetzen und ohne Blending da rumschwirren?

(Ach ja, und eigentlich war die Standard-Einstellung mit 0,5 Transparency meine Favouriten-Einstellung wo ich dachte, da siehts ganz annehmbar aus. :D
Aber man kann ja noch ne Menge an den Werten rumspielen und vielleicht bessere Einstellungen finden.)

Dingsi
24.02.2005, 23:52
"Etwas körnig" ist gut. Bei mir sehe ich da große schwarze Vierecke, wenn die Transparenz unter 1.0 ist.

Ynnus
24.02.2005, 23:59
Hm, große schwarze Vierecke? Sollte eigentlich nicht sein. Vielleicht ein Problem mit der Grafikkarte? Bei mir ist da nichts schwarz und viereckig... Könntest du vielleicht einen Screenshot davon posten?


//EDIT: So sollte es aussehen:

http://derfeind2k.de/daten/glfire.png

Mit etwas körnig meinte ich, dass sich die obersten Feuerpartikel jetzt hier schon abgesetzt haben und deshalb weniger geblendet werden. Daher sieht's etwas weniger schön aus.

nudelsalat
25.02.2005, 08:19
Hm, große schwarze Vierecke? Sollte eigentlich nicht sein. Vielleicht ein Problem mit der Grafikkarte? Bei mir ist da nichts schwarz und viereckig... Könntest du vielleicht einen Screenshot davon posten?

Vielleicht meint er das: http://www.bankofchina.de/gallery/pics/gast/69271.jpg
Stört etwas stark bei der Animation. Ansonsten finde ich das Feuer recht gut, allerdings läuft das Programm viel zu schnell.

Feenstaub
25.02.2005, 10:53
Meine bescheidene Meinung:

Pro:
+ Es läuft! Eine eigentlich selbstverständliche Tatsache, die aber grade im Softwarebereich zunehmend in Vergessenheit gerät und eine Anwendung erst nach Patch 6.13 korrekt laufen lässt.
+ Schön, dass du in dieses kleine Progrämmchen eine intuitive, leichtgängige Benutzerführung eingebaut hast. Da macht es Spass, ein Programm zu testen. Leider vergessen so etwas viele der angehenden SE's. Daher: Herausragende Arbeit!
+ Für erste Gehversuche im OpenGL-Bereich eine absolut zufriedenstellende Arbeit. Fetter Respekt!

Contra:
+ Glaux ist überholt, wird nicht mehr unterstützt und gilt als sehr fehleranfällig. (Kurzer Artikel (http://pws.prserv.net/mfcogl/Glaux%20-%20%20MFC%20&%20OpenGL%20Page.htm)). Du verwendest sie wahrscheinlich nur zum Laden der TGA-Datei. Sieh dir als Alternative mal dieses hervorragende Tutorial an: Klick mich! (http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=24). NeHe's Seite ist aber generell DIE EINSTEIGERQUELLE für alle hungrigen OpenGL-Programmierer und solche, die es werden wollen.
+ Die Transparenz der Texturen wird nicht korrekt eingesetzt (wie bereits von anderen bemängelt). Daher sieht man übereinandergestapelte Vierecke, deren schwarze Ränder nicht korrekt ausgeblendet werden.

Hinweise (nicht wirklich Kritik!):
+ Du solltest noch ein wenig mit Farbübergängen spielen. Gelb nach Rot, zb. oder auch einen kleinen Grünstich im Kern der Flamme.
+ Es ist zu wenig Randomness in der Darstellung. Lass die Quelle ruhig breiter streuen (immer natürlich in den gegebenen Simulationsgrenzen). Und bau immer mal wieder (unzähmbare) Aussetzer ein, aka Funkenflug.
+ Wenn der Quelltext dabei wäre, könnte man weitere Hinweise geben. Aber das ist deine Entscheidung. ;)

Küsschen,
Feenstaub.

Ynnus
25.02.2005, 14:52
Danke für die Hinweise, ich werd mal sehen woran das liegt, dass bei euch die Texturen nicht korrekt geblendet werden. Was glaux betrifft, dass hab ich vergessen zu entfernen. Ist eigentlich nur ein alter BMP-Loader von früher der nicht mehr verwendet wird. Ich lade die Textur derzeit über genau diesen Loader von NeHe. ;)
Ansonsten verwende ich glaux auch nicht und einen bmp-loader werd ich mir, falls ich ihn nochmals benötigen sollte, dann selber schreiben.

Naja, und dass das Programm zu schnell läuft, liegt daran, dass ich es nicht Framebasiert gemacht habe. Aber eigentlich kann man solche Sachen wie Geschwindigkeit der Bewegung durch die Parameter eingeben (Vertikale und Horizontale Auslenkung sind nichts als Speed-Parameter welche zur Position des Partikels addiert werden). Also man könnte die Flamme auch nahezu stillstehend darstellen.
Quelltext-Technisch hab ich garnicht daran gedacht, den mitzuliefern. Ist vielleicht auch keine so gute Idee, ich fang gerade erst an und man würde in jeder 2ten Zeile über Form-Fehler oder unschöne Dinge stolpern. :D
Ist mehr ein experimentelles Projekt indem auch noch ungenutzter Quellcode ist, ungenutzte Variablen und soetwas, weil ich eben damit ne Menge umher probiert habe. Und dann eignen sich die ~800 auch nicht mal eben zum Posten. Beim nächsten OpenGL Projekt, welches dann auch etwas größer ausfallen wird, werd ich den Quelltext wohl beilegen. ;)

Bis dahin, haltet die Ohren steif, könnt gut sein, dass ich mich demnächst wieder mit ein paar Fragen zu OpenGL oder C++ bei euch melde. :D

Sakow
21.03.2005, 13:15
So wie im Bild sah es jetzt bei mir zwar nicht aus, aber es sieht gut aus. Bis jetzt habe ich mit OpenGl noch nicht viel am Hut gehabt, aber ich weis um was es geht, darum denke ich kann ich sagen das es wirklich gut gelungen ist. :)

Jesus_666
21.03.2005, 14:07
Geschrieben wurde dieses kleine Programm in C, mit Hilfe der WinAPI und OpenGL. (Läuft somit leider vorerst nur unter Windows-Systemen)
Ich weiß nicht, was du hast - sowohl Cedega als auch Wine haben keinerlei Probleme mit dem Programm. Mal abgesehen davon, daß Cedega hinterher meine Auflösung auf 1280x1024 umgestellt hat.

Das ist der Grund, warum ich OGL besser finde als DX. Wenn du DX verwendet hättest würde Wine sofort Krämpfe kriegen. Wahrscheinlich könnte man das Programm sogar mit relativ geringem Aufwand portabel machen - mit DX wäre das schon etwas aufwendiger.

Ineluki
21.03.2005, 20:32
ist zwar jetzt etwas off topic, aber man moege mir vergeben ...

ich weiss ja, dass DX (groesstenteils) von MS kommt, aber warum gibt es dafuer nicht, wie zu ettlichen Sachen auch eine OpenSource Nachbau (u.a. fuer Linux) ? ... Im Prinzip kommen die DX Kerntreiber ja von den Graphikkartenherstellern ...

Oder gibt es sowas, und ich habe es nur nicht mitbekommen ?

Crash-Override
21.03.2005, 20:50
So wie ich das verstehe ist DirektX die Scnittstelle zwischen der Grafikkarte und der Software, also schätze ich das DX die internen Graka-Befehle einfach in die WinApi einamauert bzw. vereinfacht, wie auch die modernen Hochsprachen im grunde nur Assembler vereinfachen. Man macht halt in C++ ein cout und in ASM mehrere Zeilen (ich kenn mich mit ASM in Windows nicht aus). Theoretisch könnte man sowas 'ganz einfach' auf Linux nachbauen, doch das würde sehr viel Zeit in anspruch nehemen, da es ja viele verschieden Graka-Modele gibt. Auserdem gibt es ja auch schon OpenGL...

MagicMagor
21.03.2005, 21:31
Nunja DX bietet etwas mehr als nur die grafische Darstellung..

Allerdings glaube ich, daß MS DX entwickelt und die Kartenhersteller dann gucken, daß sie das neuste DX unterstützen.
Für die Grafik, gibt es ja OpenGL als freie Alternative, für die anderen Dinge, wie DirectInput oder DirectSound gibt es ja auch schon freie Alternativen, die das große Plus von OpenGL teilen, die Crosskompabilität. (zB OpenAL für Sound, SDL etc..)
Es gibt freie Alternativen zu DX, nur halt nicht unbedingt alles in einem Packet zusammen..

Jesus_666
21.03.2005, 22:44
ist zwar jetzt etwas off topic, aber man moege mir vergeben ...

ich weiss ja, dass DX (groesstenteils) von MS kommt, aber warum gibt es dafuer nicht, wie zu ettlichen Sachen auch eine OpenSource Nachbau (u.a. fuer Linux) ? ... Im Prinzip kommen die DX Kerntreiber ja von den Graphikkartenherstellern ...

Oder gibt es sowas, und ich habe es nur nicht mitbekommen ?
Wine versucht seit einiger Zeit, Teile von DX zu emulieren; da hier allerdings auch wieder eine komplette API reverse-engineert werden muß dauert es natürlich SEHR LANGE, bis irgendwas brauchbares dabei rauskommt.

Cedega hat wesentlich besseren DX-Support. Könnte sein, daß die irgendeinen Deal mit Microsoft haben, der für Wine nicht geht (z.B. weil die Lizenz für die DX-Spezifikationen eine OSS-Verwendung unmöglich macht).