SDL Framelimit



  • DKing schrieb:

    Ja aber wie lääst sich das mit SDL realisieren die FPS auf 50 bzw weniger zuschrauben???
    Ich will Systemleistung haben 😕
    Wenn es nicht eleganter geht, muss ich wohl SDL_Delay nehmen 😞

    ne framebremse in sdl sieht so aus:

    //... initialisierungen etc...
    int framebreak;
    while(mainloopistan)
    {
    framebreak=SDL_GetTicks();
    
    //...hier alle sachen die du in der main loop machen willst, die anwendung halt..
    
    //und am ende der schleife:
    while((SDL_GetTicks()-freambreak)</*ein wert,hier 30*/ 30)
    {
    //Hier passiert nichts
    }
    }
    


  • Für feste Logikschritte habe ich kürzlich ein Codeschnipsel gepostet. Einfach mal suchen (NEIN! nicht die Boardsuche, von Hand... leider). Zu relativer Bewegung in die FAQ schauen.
    geloescht



  • SDL_Ticks():
    Get the number of milliseconds since the SDL library initialization. Note that this value wraps if the program runs for more than ~49 days.

    Bist du sicher das dein Code funktioniert?



  • also mit GetTickCount() von windows.h funktioniert es. ich nehme mal an dass die funktionen die selbe ""funktion"" haben 😉



  • Glückwunsch. Jetzt seid ihr auch da angekommen, wo ich bereits mit meinem 1. Posting war 😉



  • Wie schon gesagt, ohne eine Möglichkeit zu warten (WaitForSingleObject, Sleep, ...) ist das aber völliger Schwachsinn.

    Dann wird zwar nur mit max. XX fps gerendert, die restliche Zeit wird aber trotzdem von der CPU für die Endlosschleife verbraten.
    Dann kann man auch lieber wie wild durchrendern... hat man mehr von.

    BTW: @Fensteranwendung: Wenn das kein Game (bzw. Software mit ähnlichen Interaktionsmöglichkeiten) ist, sondern nur ein Modelviewer oder sowas, wär's sicher schlauer nur bei PAINT-Events überhaupt neu zu zeichnen bzw. solange sich nichts ändert.



  • Sgt. Nukem schrieb:

    Dann wird zwar nur mit max. XX fps gerendert, die restliche Zeit wird aber trotzdem von der CPU für die Endlosschleife verbraten.
    Dann kann man auch lieber wie wild durchrendern... hat man mehr von.

    Dann hab ich nicht mehr xx fps.



  • interpreter schrieb:

    Sgt. Nukem schrieb:

    Dann wird zwar nur mit max. XX fps gerendert, die restliche Zeit wird aber trotzdem von der CPU für die Endlosschleife verbraten.
    Dann kann man auch lieber wie wild durchrendern... hat man mehr von.

    Time based rendering und frame based rendering sind unterschiedliche Sachen.

    LOL, dann verbrate ich halt nach jedem Renderdurchgang drölfzig Trillionen CPU-Cycles, bis wieder 30 msec um sind... 🙄



  • Zuletzt bearbeitet schrieb:

    Sgt. Nukem schrieb:

    Dann wird zwar nur mit max. XX fps gerendert, die restliche Zeit wird aber trotzdem von der CPU für die Endlosschleife verbraten.
    Dann kann man auch lieber wie wild durchrendern... hat man mehr von.

    Dann hab ich nicht mehr xx fps.

    Höh?! 😕



  • rapso schrieb:

    sleep sorgt nicht dafür dass der cpu irgendwas mitgeteilt wird, sondern lediglich dafür dass für die angegebene zeit dein prozess keine rechenzeit bekommt.

    Eben, darum geht es ja mit Sleep auch nicht.

    Bye, TGGC (Das Jahr des Helden)



  • Sgt. Nukem schrieb:

    interpreter schrieb:

    Sgt. Nukem schrieb:

    Dann wird zwar nur mit max. XX fps gerendert, die restliche Zeit wird aber trotzdem von der CPU für die Endlosschleife verbraten.
    Dann kann man auch lieber wie wild durchrendern... hat man mehr von.

    Time based rendering und frame based rendering sind unterschiedliche Sachen.

    LOL, dann verbrate ich halt nach jedem Renderdurchgang drölfzig Trillionen CPU-Cycles, bis wieder 30 msec um sind... 🙄

    Wenn ich Frame Based Rendering benötige und mir andere Programme egal sind (was bei Spielen im Vollbildmodus meistens der Fall ist): Ja.



  • Wie hast du btw per sdl vsync ausgestellt? 🙄


Anmelden zum Antworten