Um das zu umgehen, könntest du einen std::vector<char> verwenden
Habe ich mal versucht, funktioniert auch wesentlich besser. Aber ab einer großen anzahl an Partikeln (500000 aufwärts) ist es dennoch recht langesam im Vergleich zum C-Array.
Die anderen Verbesserungsvorschläge werde ich mir eventuell bei Gelegenheit mal ansehen, wobei ich bei einigen auch noch keine Erfahrung habe und ich es erst noch lernen müsste (Shader z.B.).
Ich würde Partikel, deren zeit gerade abgelaufen ist, mit dem letzten aktiven Partikel tauschen und dann den Index runtersetzen.
Damit hast du dann immer eine aufeinander folgende Liste an aktiven Partikeln. Außerdem weißt du durch den Index auch genau, wie viele gerade aktiv sind. Zusätzlich mußt du nicht die ganze Liste beim Aktualisieren durchlaufen, sondern nur von Anfang bis Index.
Habe ich verbessert, funktioniert gut
.
So wie es jetzt ist läuft es ganz gut und ist auch dicke ausreichend. Vielen Dank an alle
.