Zustandswechsel überwachen



  • Ich zeichne anhand mehrerer bool Variablen eine Grafik. Der Update-Zyklus ist recht komplex, das bedeutet, wenn ich bei jedem Zyklus alle n Objekte neuzeichne, obwohl sich nur eins davon verändert hat, lahmt die Anwendung.
    Ich frage mich nun, ob ich irgendwie auf eine kluge Art und Weise den Status prüfen kann.

    Ich hab die üblichen Getter und Setter der oben erwähnten Variablen, der Zeichenzyklus entspricht jedoch nicht dem Zeitpunkt des Setzens der Variablen.
    Nun könnte ich für jede Variable noch ein bool xy_isDirty mitschleppen und beim setzen der Variable gleichzeitig isDirty triggern, aber irgendwie scheint das keine elegante Lösung zu sein. Natürlich kann man ne Hash-Table(Map) für die dirty Sachen verwenden, aber es ist immernoch irgendwie umständlich.



  • Worauf wird denn ausgegeben? Konsole, Fenster oder etwas Anderes?



  • Was wird ausgegeben? Die Variablen werden garnicht ausgegeben, es wird eine Grafik gemäß dieser Parameter generiert und in eine GUI (opengl) ausgegeben



  • Vieleicht den Redraw dieses geänderten Teils der Grafik direkt in den Setter rein?
    Ansonsten würde ich die Dirty-Variante benutzen.

    PS: Dieser Thread sollte imo ins Grafik-Game-Forum.



  • Hmm.
    Du solltest die Optimierung nicht zu früh machen. Das bringts nicht.
    Mach einfach mal und dann, wenn du fertig bist, schaust du mit einem Profiler (auf Release natürlich) an und dann wirdst du kaum diese Stellte als Flaschenhals finden.
    Kannst es ja auch jetzt mal mit Release versuchen. Der Code wird sehr viel schneller. (Was aber grundsätzlich nicht für das Rendering gilt)



  • Seikilos schrieb:

    Nun könnte ich für jede Variable noch ein bool xy_isDirty mitschleppen und beim setzen der Variable gleichzeitig isDirty triggern, aber irgendwie scheint das keine elegante Lösung zu sein. Natürlich kann man ne Hash-Table(Map) für die dirty Sachen verwenden, aber es ist immernoch irgendwie umständlich.

    Das mit dem Dirtyflag ist ganz normal. Und ne Hashmap ist auch keine schlechte Idee. Außerdem könntest du noch das Wikipedia: Observer_Pattern anschauen.



  • Genau. Solche "dirty" Flags werden z.B. auch oft in Szenen-Graphen verwendet, ist also nix ungewöhnliches.

    Alternativ könnte der "Renderer" sich den letzten Zustand merken, und dann einfach auf Unterschiede prüfen. Das hätte den Vorteil den Renderer von den Daten zu entkoppeln und gleichzeitig mehrere Renderer zu ermöglichen.


Anmelden zum Antworten