OpenGL: Animationen?



  • Hallo,

    ich habe bisher in Sachen Grafikprogrammierung fast nichts gemacht, deshalb habe ich mal zur groben Orientierung eine allgemeine Frage.
    Was ich vorhabe ist eigentlich simpel:
    Es sollen auf einem Hintergrundbild verschiedene kleine und größere Animationen ablaufen, wobei alles in 2D ist. Realisiert werden soll das Ganze mit OpenGL ES (oder Core Animation+Core Image, aber ich muss mich erstmal umhören wie groß da die Performance-Unterschiede sind).

    Wie geht man nun bei sowas vor? Die einzelnen Bilder der Animationen hätte ich als Grafiken vorliegen. Empfiehlt es sich da einen Sprite-mäßigen Ansatz zu wählen und die Animation durch Clipping zu erreichen? Oder macht man sowas komplett anders?

    Wäre super, wenn mir jemand ein paar Tipps zum Einstieg hat 🙂
    Grüße,
    Michael



  • Im Prinzip kann man das ganz einfach zusammenfassen: Texturierte Quads rendern.



  • Wie Dot sagte: Texturen.
    Mach dir Spritesheets, ein gutes Tool dazu ist:
    http://spritesheetpacker.codeplex.com/

    Ich verwende das selbst. Ich parse die Textdatei die erstellt wird und generiere eine Liste mit den TexturCoordinaten von jedem Bild. Identifiziert werden die Bilder über den Dateinamen ohne Endung.
    Die Implementation findest du hier:
    http://code.google.com/p/nightlight2d/source/browse/trunk/NightLightDLL/NLSpriteSheet.cpp

    Nun brauchst du nur dein Sprite. Sagen wir Du hast 25 Frames pro Sekunde bei einer Animation (Animation, nicht die FPS des Bildschirms), dann musst du alle 40ms die Texturkoordinaten wechseln. Da du aber die gleiche Textur für alle Frames verwendest, wird das ganze dadurch nicht langsamer. (Texturwechsel sind immer noch mit das teuerste in OpenGL).



  • Danke für die guten Tipps! Genau so etwas hatte ich mir erhofft, jetzt weiß ich in welche Richtung ich mich belesen muss.

    Vielen Dank! 🙂


Log in to reply