SDL -> Animierte GIF Datei darstellen
-
Hallo,
ich habe gerade ein wenig mit der SDL_Image lib rumprobiert, aber wenn man eine GIF Datei laden möchte wird ja nur der erste Frame ausgegeben. Nun würde ich gerne wissen was die beste Möglichkeit ist, die Animation vollständig darstellen zu lassen. Ich habe gelesen (in einem sehr alten Post), dass keine extra Funktion dafür zu Verfügung steht und man jeden Frame selbstständig auf ein SDL_Surface packen muss. Ist das immer noch der Stand der Dinge?
Danke im Voraus
-
Du bist besser dran das GIF in einen PNG Strip oder Sheet zu packen und das ganze als 1 Bild zu laden und dann jeden Frame einzeln zu rendern in einer Geschwindigkeit wo das ganze dann wie eine Animation aussieht.
-
mrkakashi schrieb:
Hallo,
ich habe gerade ein wenig mit der SDL_Image lib rumprobiert, aber wenn man eine GIF Datei laden möchte wird ja nur der erste Frame ausgegeben. Nun würde ich gerne wissen was die beste Möglichkeit ist, die Animation vollständig darstellen zu lassen. Ich habe gelesen (in einem sehr alten Post), dass keine extra Funktion dafür zu Verfügung steht und man jeden Frame selbstständig auf ein SDL_Surface packen muss. Ist das immer noch der Stand der Dinge?
Danke im VorausSo macht man das nicht.
Man packt ALLE einzelnen Animationssprites in ein einziges Bild und setzt sie nebeneinander.
Und dann schneidest du die Animationsteile, die du gerade benötigst, aus dieser einen großen Grafik raus und stellst sie im Spiel dar.
Die Transparenzfunktion von PNG dürfte dir hierbei behilflich sein.
Alternativ dazu kannst du auch einen Colorwert setzten den du dann nicht verwenden darst. Vergleichbar mit Green Screens bei der Filmproduktion.So sieht dann so eine Grafik die alle Animationsteile enthält ungefährt aus:
http://imagizer.imageshack.us/a/img843/1360/imga.pngPS: Das Bild ist nicht von mir, habe das aber mit Google auf Anhieb gefunden.
-
Nur als Anmerkung:
Ein guter Packer ist übrigens http://spritesheetpacker.codeplex.com/.
Generiert ein einfach zu parsendes Textfile, das die Koordinaten und Größe von jedem Frame enthält.