Ich will mit FastLED Animationen überblenden. Die Ausgabe ist fest mit dem CRGB Array leds verlinkt.
Ich rendere also die erste Animation in dieses Array. Eine zweite Animation berechne ich im Array Frontbuffer. Für die Überblendung kopiere ich über mehrere Frames schrittweise Teile vom sich ändernden Frontbuffer in den sich weiter ändernden Backbuffer leds - bis am Ende Frontbuffer komplett "über" dem (=im) Backbuffer liegt.
Jetzt will ich "umschalten", dass die zweite Animation im ersten Array weiterberechnet wird (damit das Kopieren des Inhaltes entfällt) und Front und Backbuffer sollen ihre Namen wechseln, damit ich mit o.g. Funktion zu einer dritten Animation überblenden kann.
Verständlich? Ich will unter Beibehaltung der initialisierten Namen die Speicherbereiche verändern (vertauschen), auf den die beiden Arrays zeigen.
Ich nehme an, dass da ein Pointer weiterhelfen würde, habe aber keine Ahnung, ob das geht und wie der entsprechende Code aussehen könnte.
Serenifly:
Arrays sind doch in C nichts anderes als Zeiger auf einen Speicher-Bereich. Eine Array Variable ist ein Zeiger auf das erste Element dieses Bereichs.
Wenn du das hast:
byte test[10];
Ist test ein byte* der auf &test[0] zeigt und du kannst sowas machen:
byte* b = test;
Bist Du sicher daß für den Zeiger ein BYTE genügt und es kein INT braucht?
Grüße Uwe
byte* ist ein Zeiger auf ein Byte. Und der Zeiger selbst belegt 2 Byte/16 Bit. Wenn du da sizeof(b) machst kommt also 2 heraus. Aber der Datentyp selbst hat nichts mit der eigentlichen Größe zu tun.