Hallo,
Ich habe einen Thread, der mit 60 fps rendern soll. Hier die Schleife dazu:
Gedacht ist, genau 1e9 / 60 ns - postRender(Zeit die man zum Rendern benötigt) zu schlafen, um auf exakt 60 fps zu kommen. Leider bekomme ich durchgehend nur 58 fps.
Ich kann mir absolut nich erklären woran das liegt.
Zusätzlich: ab 1e9 / 60.6 ns bekomme ich konstant 62 fps ...
Ist mir absolut unverständlich ... kann mir das jemand erklären?
Danke,
-Luk10-
Ich habe einen Thread, der mit 60 fps rendern soll. Hier die Schleife dazu:
Java:
@Override
public void run() {
while (isRunning) {
preRender = System.nanoTime();
swap();
long exactSleepingTime = (long) ((1e9 / 60.0) - postRender); //Exakte Zeit in Nanos
//Aufspaltung in Millis + Nanos für Thread.sleep(milli, nano)
int sleepingTime = (int) (exactSleepingTime / 1e6); //Zeit in Millis
int additionalSleepingTime = (int) (exactSleepingTime - sleepingTime * 1e6); //Rest in Nanos
// System.out.println(sleepingTime + " | " +
// additionalSleepingTime);
postRender = System.nanoTime() - preRender;
fps = (long) (1e9 / delta);
System.out.println(fps + " fps");
try {
Thread.sleep(sleepingTime, additionalSleepingTime);
} catch (InterruptedException e) {
e.printStackTrace();
}
delta = System.nanoTime() - preRender;
}
}
Gedacht ist, genau 1e9 / 60 ns - postRender(Zeit die man zum Rendern benötigt) zu schlafen, um auf exakt 60 fps zu kommen. Leider bekomme ich durchgehend nur 58 fps.
Ich kann mir absolut nich erklären woran das liegt.
Zusätzlich: ab 1e9 / 60.6 ns bekomme ich konstant 62 fps ...
Ist mir absolut unverständlich ... kann mir das jemand erklären?
Danke,
-Luk10-
Zuletzt bearbeitet: