Farbe := Colors greift auf ein property der Klasse zu und bekommt ein Dynamisches Array zurueck.
Es könnten also 3 aber auch 30 sein, obwohl das nicht viel sinn haette mit 30.
Auf jeden Fall ist mein problem: ohne Farbinterpolation habe ich bei etwa 5000 Particle 100 FPS und mit habe ich gleich nur noch 60. Das sollte ja nicht sein. Kann man die Rechnung vereinfachen?
wahrscheinlich nicht, aber du kannst es dem compiler ermöglichen, divisionen herauszuwerfen und ihn stattdessen multiplikationen rechnen lassen und ergebnisse die du mehrmals braucht in variablen ablegen, damit der Compiler es nicht mehrfach berechnet und so Ergebnisse auch in registern halten kann. z.B.:
Code:
Color := AddVector(Color, CalculateColor);
atd1000 =(1.0/1.000)*aTime;
//So zwingst du den Compiler zur multiplikation und division zur Compilezeit.
//Hinten dividieren nötigte Delphi zu meiner Zeit immer zu echten Divisionen
SpdTime = Speed*atd1000;//brauchen wir ja häufiger
Position[0]:= Position[0]+ Direction[0]* SpdTime;
Position[1]:= Position[1]+ Direction[1]* SpdTime;
Position[2]:= Position[2]+ Direction[2]* SpdTime;
LiveSpan := LiveSpan - aTime;
Age := Age + aTime;
Den gleichen Spaß kannst du in CalculateColor auch machen. EIn bsichen Tempo kannst du so herausholen. Leider gibt es die Seite Optimalcode nicht mehr, da standen viele solcher Tipps für Delphi drinne. Ansonsten musst du halt mal mit Stift und papier deine Rechnungen durchklopfen und sehen, ob sich was vereinfachen lässt - manchmal merkt man dann, daß man noch viel Scheiß rauswerfen kann.
Mitglieder in diesem Forum: 0 Mitglieder und 9 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.