Allgemein gar nicht. Es gibt aber ein paar Methoden wo man hohe Reproduktion auf alle Rechnern mit ausreichender Geschwindigkeit erzeugen kann:
a)
Du hast ein draw() und ein update(). Das Update soll mit einer bestimmten Frequenz aufgerufen werden, z.b. 200 mal pro Sekunde. Du misst also immer, wieviel Zeit seit Programmstart vergangen ist und rufst dementsprechend oft update auf. Hast du das geschafft, rufst du einmal draw auf und beginnst von vor. Ist dein PC aber zu langsam, dann wird die Anzahl noetiger updates irgendwann zu gross, daher musst du die Aufrufe limitieren (z.b. nicht oefter als 50mal hintereinander, dann wieder draw().
b)
Du hast ein draw(t) und ein update. Das Update soll mit einer bestimmten Frequenz aufgerufen werden, z.b. 10 mal pro Sekunde. Du misst also immer, wieviel Zeit seit Programmstart vergangen ist und rufst dementsprechend oft update auf. Dann rufst du draw(t) auf und uebergibt dort die Zeit t, die seit dem letzten update() vergangen ist. Dann wieder von vorn. Der Unterschied ist jetzt, das draw den Zustand vom update nimmt und t Sekunden in die Zukunft interpoliert.
c) Du hast ein draw() und ein update(t). Diese rufst du immer abwechselnd auf. Update sorgt dafuer, das der aktuelle Zustand um genau t Sekungen weiter bewegt wird. Hierbei muss deine Mathekmatik/ Physik (genau genommen der "Integrator") aber sehr genau sein, damit die Ergebnis immer gleich oder zumindest aehnlich sind.