Search code examples
javaandroidlibgdxnanotime

Calculating time passed in libgdx with getDeltaTime()


i am trying to calculate the time passed in my libGDX application like this

 float timeSpent= 0;

public void render(){
  timeSpent = timeSpent + Gdx.graphics.getDeltaTime();

}

by the above code i feel like the time is almost passing double the normal rate

but if i get delta time directly from java's nano time method like this

float prevTime;
float timeSpent = 0;
public void show(){
   prevTime = System.nanoTime();
}
public void render(){
   float p = System.nanoTime(); 
   timeSpent  += (p-prevTime)/1000000000f;
   prevTime = p;
}

it seems to work fine, i know that libgdx also get delta time from subtracting nano time method.

i am not able to figure out what am i doing wrong in the first method.

thank you


Solution

  • You can calculate the passed time from the start of your application by simply saving a date when it starts, and just subtract it from the current date. No need to accumulate the deltas in each frame.

    You can further simplify the code by using TimeUtils:

    // save at start
    long start = TimeUtils.millis();
    
    // query whenever you want
    long diffInMillis = TimeUtils.timeSinceMillis(startTime);