Registriert: So Nov 07, 2010 14:08 Beiträge: 11
Programmiersprache: Delphi
Hallo,
ich bin gerade dabei mich ein wenig in die Fireblade Partikel-Engine einzuarbeiten. Ich habe die neueste Version von Sourceforge und wollte einmal tut_basic kompilieren, da dass jedoch für Freepascal ist (und ich Codegear Delphi verwende) habe ich es - eigentlich - eins zu eins in ein mit Codegear Delphi ikompilierbares Projekt umgeschrieben. Leider funktioniert das jetzt nicht ganz so wie es soll sprich ich sehe nicht den Emitter den man eigentlich erzeugt hat sondern - nur den blauen Hintergrund (sonst nichts).
Das einzige was ich übrigens richtig verändern musste war dass ich kein SDL, und auch den SDL_TextureLoader durch die textures.pas (v1.03) ausgetauscht habe.
procedure TForm1.SetupGL; begin glClearColor(0.3, 0.4, 0.7, 0.0); //Hintergrundfarbe: Hier ein leichtes Blau gluPerspective(75, Width/Height, NearClipping, FarClipping); glEnable(GL_DEPTH_TEST); //Tiefentest aktivieren end;
Bist du sicher, dass dein Viewport anfangs gesetzt wird? Denn einerseits passiert das nur in OnResize und andererseits wendest du den Befehl auf die Modelview Matrix an... um sicher zu gehen solltest du das vielleicht mal so ausprobieren:
Code:
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); glClearColor(0.3, 0.4, 0.7, 0.0); //Hintergrundfarbe: Hier ein leichtes Blau
Registriert: So Nov 07, 2010 14:08 Beiträge: 11
Programmiersprache: Delphi
Hallo Kyro, erst mal Danke dass du dir um 2 Uhr Nachts Zeit für mich genommen hast.
Ich habe was du gesagt hast korrigiert und meine proceduren Render / SetupGL sehen jetzt so aus:
Code:
procedure TForm1.Render; begin glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); glClearColor(0.3, 0.4, 0.7, 0.0); //Hintergrundfarbe: Hier ein leichtes Blau
Ich (als unwissender Anfänger ) kann mir eigentlich nur aus 2 Gründen vorstellen dass es nicht geht da ich eigentlich den Code 1:1 aus deinem tut_basic genommen habe:
1. liegt es daran dass ich Delphi 2010 hab (mit dieser neuen Unicode-Unterstützung) und deshalb irgendwas rumspinnt.
oder 2. es liegt an FDeltaTime, du berechnest es mit dem SDL-Ereignis WindowUpdate dass dir den Wert gleich gibt. In der Documentation steht jedoch für
Zitat:
ADeltaTime The time since the last call
Und das wird bei mir ja auch so übergeben (ich habe es auch schon mit einem konstanten Wert versucht - gleiches Ergebnis).
Ich hoffe dass du eine Idee hast was ich falsch mache da ich mich eigentlich schon darauf gefreut habe deine echt tolle Engine (nach de was ich gehört habe) zu benutzen
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Was mir zu deinem Code so auffällt:
SetupGL wird ständig gerufen. Die Perspektive muss aber nicht bei jedem Draw neu gesetzt werden, wenn du die zwischendurch nicht verändert hast. Die Perspektive muss nur einmal am Anfang und im onResize gesetzt werden. Im Form Resize verwendest du nebenbei andere Parameter für die Perspektive als im SetupGL.
Versuch mal noch etwas weiter aus der Szene heraus zu gehen. Vielleicht ist der Emitter irgendwo abseits der Kamera.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Aber jetzt wo du es sagst... so wie ich das sehe, nimmst du die Ticks direkt als DeltaTime, also in Millisekunden. FB erwartet die Zeit in Sekunden (übrigens nen guter Hinweis für die Doku).
Bei einer maximalen Lebensdauer der Partikel von 0.7sec würde das bedeuten, dass ein Partikel quasi stirbt bevor es überhaupt gelebt hat Überprüf mal den ParticleCount im Context via TFB_Context.ParticleCount. Wenn da 0 bei rauskommt kannst du auch nichts sehen
MfG
_________________ I'm not the signature, I'm just cleaning the floor...
Mitglieder in diesem Forum: 0 Mitglieder und 11 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.