SDL und Frame rate limit



  • Hi, ich bin Dummie in Mathematik und wollte bloß mal nach den rechten Dingen fragen. Folgender Codeausschnitt:

    while(!quit){
            new_time = std::time(0);
            frame_time = new_time - current;
            current = new_time;
    
            while(frame_time > 0){
                delta = std::min((int)frame_time, wait_ticks);
                SDL_Delay(frame_time);
                frame_time -= delta;
            }
    
    ...
    
            surface.clear();
            surface.draw(hello);
            surface.update();
        }
    

    Ist das richtig so? Ich bemerke vom Bild her keinen Unterschied und zugegebenermaßen verstehe ich den Code bloß zur Hälfte. Zwischen den Zeilen 2 und 4 wird die Frametime ausgerechnet. Die while-Schleife dient dazu, solange zu warten, bis frame_time kleiner-gleich Null ist. Soweit noch alles klar. Was ich nicht verstehe ist Zeile 7. Warum den kleinsten Wert von entweder frame_time oder wait_ticks ? Ich kann mir irgendwie schwer was darunter vorstellen. Wie kommt man auf sowas?

    Ansonsten, ist die Implementierung des Framerate Limits korrekt so? Oder ist da noch etwas, das ich nicht verstanden habe? Ich muss zugeben, ich habe den gezeigten Code etwas abgetippt, zumals was in der while-Schleife passiert, habe ich nicht so recht verstanden.

    Kann mir das mal wer erklären? Wär ich echt dankbar.

    Liebe Grüße,
    Luuu



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (alle ISO-Standards) in das Forum Spiele-/Grafikprogrammierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten