SDL - Realtime Rotation



  • Ich schreib momentan Just for Fun ein kleines Echtzeitspiel in C++ um mich ein wenig auf meine bevorstehende Prüfung in IT vorzubereiten.

    Hab schon ein wenig fertig aber nun bin ich doch auf ein Problem gestoßen. Wäre für Hilfe sehr dankbar. Folgendes, ich will Objekte (Sprites) rotieren lassen und zwar um 360° ( in 1°-Schritten). Eigentlich eine einfache Sache. Aber liegt es an mir oder ist rotozoomSurface von SDL_gfx relativ langsam?

    Es ist möglich, dasd er das für mehrere dutzende Sprites auf einmal machen muss. Sicherlich keine hunderte auf einmal, aber doch einige und das öfter mal. Aber wie gesagt, das ist alles relativ Ressourcenlastig.

    Wie macht ihr das? Gibt es eine bessere Alternative? Vorladen? Aber das benötigt wiederum massenhaft Arbeitsspeicher.



  • JDieskau schrieb:

    Es ist möglich, dasd er das für mehrere dutzende Sprites auf einmal machen muss. Sicherlich keine hunderte auf einmal, aber doch einige und das öfter mal. Aber wie gesagt, das ist alles relativ Ressourcenlastig.

    Also sagen wir so. Rotationen sind, im Vergleich zum einfachen Blitten der Bilder, relativ teuer. Vielleicht kann man an der ein oder anderen stelle bei GDL_Gfx noch was optimieren, z.B. mit SSE, aber das muss nicht unbedingt sein.

    Du hast in jedem Computer spezial Hardware, die sowas erledigt. Die 3D-Beschläunigung deiner Grafikkarte. SDL arbeitet recht gut mit OpenGL zusammen und OpenGL lässt sich problemlos für 2D anwendungen nutzen. Wenn du deinen Code vernünftig gekapselt hast, sollte es kein Problem sein, auf OpenGL umzusteigen. Es bedarf allerdings einiger Einarbbeitungszeit.



  • Ein Umstieg auf OpenGL wäre sicherlich kein so großes Problem. Immerhin sind die "zeichen"-Funktionen nur eine Handvoll. Da müsst ich den SDL_gfx Code ja nur in OpenGL umschreiben.
    Jedoch wird das wirklich nur ein sehr einfaches 2D Spiel von der Grafik her. Ich finde das ist OpenGL irgendwie fehl am Platz. Zudem sollte es möglichst auf alten Rechnern laufen, auch ohne "schnelle" Grafikkarte.

    Aber ich hab jetzt etwas rumprobiert und so schlimm scheint der Performanceverlust doch nicht zu sein. Hoffen wir mal das es sich nicht im Laufe der Entwicklung als Hinderniss herausstellt. Dann wäre ja immer noch die Alternative OpenGL und SDL (alleinstehend) einzubauen.



  • schau dir mal SFML an..
    http://www.sfml-dev.org/features.php



  • TGM schrieb:

    schau dir mal SFML an..
    http://www.sfml-dev.org/features.php

    Die verwendet intern ebenfalls OpenGL 😉 Ausserdem ists sicherlich weniger aufwendig, nur den Zeichen-Code auf OpenGL umzuschreiben als die ganze App. von SDL nach SFML zu konvertieren.


Anmelden zum Antworten