Page 1 of 1

Función getDeltaTime().

PostPosted: Sat Dec 17, 2011 10:34 am
by shao
Hola, alguien sabe para que sirve la función getDeltaTime() en android?.
Tengo un pequeño código para físicas en el que se usa esta función pero está en android, la función pertenece a tema gráfico y quiero saber en que consiste para intentar recrearla en Gemix y intentar trasladar el codigo, he leído documentación sobre ella, pero no entiendo del todo.

ok ya veo:
Returns the time difference between the current frame and the previous frame as an integer.

Al parecer retorna en entera larga el tiempo que transcurre entre el actual frame y el siguiente o algo así, para que podría servir esto?.
En Gemix este tiempo siempre es el mismo?, o depende de la máquina?.

Re: Función getDeltaTime().

PostPosted: Sat Dec 17, 2011 12:25 pm
by erkosone
Eso tiene toda la pinta de un intento basura de hacer un sincronismo de frames..
Esto en Gemix con SET_FPS() no hace falta para nada, se sincroniza solo :)

Re: Función getDeltaTime().

PostPosted: Sat Dec 17, 2011 2:45 pm
by GINO
Erkos, eso se hace siempre, hasta en gemix internamente. Cuando acabas de hacer todo el trabajo del frame actual miras cuanto tiempo ha pasado desde que acabo el frame anterior. Si ese tiempo "delta" (en milisegundos) es menor de lo que debería durar un frame, hay que hacer una pausa de la diferencia. Si es mayor, es que el juego va lento, etc.
Code: Select all
frame_duration = 1000 / frames_per_second; //duración de un frame en milisegundos
delta_time = current_time - last_frame_end; // tiempo que ha durado ejecutar/pintar/etc. este frame
if (delta_time < frame_duration)
{
    sleep(frame_duration - delta_time);
}
else
{
    //Controlar el frameskip o sino ira lento el juego ya que
    //ejecutar/pintar un frame lleva más tiempo del que debería
}

Ese es la estructura más básica de un frame loop o game loop, hay muchas variantes, pero sirve de idea.

Re: Función getDeltaTime().

PostPosted: Sat Dec 17, 2011 5:15 pm
by erkosone
Y quien ha dicho que gemix no lo haga?
Le he dicho a shao que set_fps() se encarga de establecer los tiempos, nada mas.