2016-03-28 11 views
1

Ich bin mir bewusst, dass dieses Thema bereits angesprochen wurde, aber ich konnte nie etwas aus der Seite bekommen. Ein Hinweis auf meine Antwort war, dass ich das GIF in jeden seiner Frames aufteilen muss, aber wie? Einige Code zusammen mit diesem würde sehr geschätzt werden. Vielen Dank.C++ SDL2 | Wie spiele ich ein GIF in SDL2?

+0

Müssen Sie nur eine Animation in Ihrem Spiel spielen? Oder brauchen Sie GIF und nur GIF? – HolyBlackCat

+0

Für Holy Black Cat möchte ich eine GIF-Datei in Verbindung mit einer Sounddatei verwenden, um einen Effekt zu erstellen, der wie eine Video-Cutscene aussieht. Ja, mir ist klar, dass das sehr, SEHR seltsam klingt, aber ich habe eines Tages mit meinem Spiel herumgespielt und ich dachte mir, was wäre, wenn ich das tun könnte? Ich weiß, wie man Spritesheets für grundlegende Animationen verwendet, also brauche ich keine Hilfe dabei. Mir ist bewusst, dass Sie .avi-Video in SDL in Verbindung mit einigen anderen Bibliotheken wiedergeben können, aber diese verwenden SDL1. Außerdem habe ich vergessen zu erwähnen, wäre es möglich, das GIF mit allen Frames in einer GIF-Datei abzuspielen? –

+0

Ich habe nicht GIF in meinen Spielen verwendet, aber ich fand das: http://StackOverflow.com/Questions/22708336/Reading-Animated-Gifs-SDL-2 Ein Typ in den Kommentaren sagt, dass Sie 'libungif' oder verwenden können 'giflib' zum Laden von Gifs. Versuch sie. – HolyBlackCat

Antwort

2

Verwenden Sie GIFLIB, um GIF-Animationen zu lesen. GIFLIB bietet eine praktische "slurp" -Funktion, die die gesamte Datei in Strukturen liest, aus denen Sie Ihre Bilder dann ganz einfach abrufen können. Es ist eine Weile her, aber IIRC beim Erstellen eines SDL_Texture aus dem einen GIF-Frame müssen Sie Farben aus einer Palette für jedes Pixel nachschlagen. Da Gifs keine feste Bildrate haben, müssen Sie auch die einzelnen Verzögerungszeiten für jeden Frame speichern. Lesen Sie this für eine detaillierte Beschreibung des gif-Dateiformats und es wird Ihnen helfen, Sinn von GIFLIB zu machen.

Das gesagt, würde ich raten, das klobige GIF-Format für Zwischensequenzen (und die meisten anderen Dinge) zu verwenden, weil es ziemlich Platz hungrig ist und Sie Probleme haben können, Ihre Audio schön zu synchronisieren. Ich würde empfehlen, nach einer Möglichkeit zu suchen, "echte" Videoformate zu spielen - schauen Sie sich this project an.

+0

Vielen Dank! Das hat mir wirklich geholfen! –