Help with glfwSleep and constant fps

purew wrote on Tuesday, December 11, 2007:

Hello, Im trying to achieve constant fps in my game. But after a few attempts
with no good results I decided to investigate the glfwSleep function.

On my system, Ubuntu 7.10 64bit Kernel 2.6.22-14-generic
with the following code, I get the data below:
As you can see glfwSleep sleeps 4-5ms to long on each try. Is this known behavior
or should I look for faults in my own system?

glfwSleep(1);
for (double trySleep=0.001;trySleep<0.1;trySleep+=0.002)
{
double t1 = glfwGetTime();
glfwSleep( trySleep );
double t2 = glfwGetTime();

std::cout &lt;&lt; &quot;Tried: &quot;&lt;&lt;trySleep&lt;&lt; &quot;\tactual time: &quot;&lt;&lt;\(t2-t1\)&lt;&lt;&quot;\tdelta: &quot;&lt;&lt;t2-t1-trySleep&lt;&lt; &quot;\n&quot;;

}

Tried: 0.001 actual time: 0.007995 delta: 0.006995
Tried: 0.003 actual time: 0.009718 delta: 0.006718
Tried: 0.005 actual time: 0.010147 delta: 0.005147
Tried: 0.007 actual time: 0.011781 delta: 0.004781
Tried: 0.009 actual time: 0.01411 delta: 0.00511
Tried: 0.011 actual time: 0.015807 delta: 0.004807
Tried: 0.013 actual time: 0.019744 delta: 0.006744
Tried: 0.015 actual time: 0.021985 delta: 0.006985
Tried: 0.017 actual time: 0.021928 delta: 0.004928
Tried: 0.019 actual time: 0.025809 delta: 0.006809
Tried: 0.021 actual time: 0.025894 delta: 0.004894
Tried: 0.023 actual time: 0.029872 delta: 0.006872
Tried: 0.025 actual time: 0.031984 delta: 0.006984
Tried: 0.027 actual time: 0.031971 delta: 0.004971
Tried: 0.029 actual time: 0.035988 delta: 0.006988
Tried: 0.031 actual time: 0.035971 delta: 0.004971
Tried: 0.033 actual time: 0.039973 delta: 0.006973
Tried: 0.035 actual time: 0.044338 delta: 0.009338
Tried: 0.037 actual time: 0.043639 delta: 0.006639
Tried: 0.039 actual time: 0.043966 delta: 0.004966
Tried: 0.041 actual time: 0.048022 delta: 0.007022
Tried: 0.043 actual time: 0.047942 delta: 0.004942
Tried: 0.045 actual time: 0.051955 delta: 0.006955
Tried: 0.047 actual time: 0.051973 delta: 0.004973
Tried: 0.049 actual time: 0.055984 delta: 0.006984
Tried: 0.051 actual time: 0.055975 delta: 0.004975
Tried: 0.053 actual time: 0.059982 delta: 0.006982
Tried: 0.055 actual time: 0.059976 delta: 0.004976
Tried: 0.057 actual time: 0.063972 delta: 0.006972
Tried: 0.059 actual time: 0.063974 delta: 0.004974
Tried: 0.061 actual time: 0.067978 delta: 0.006978
Tried: 0.063 actual time: 0.067976 delta: 0.004976
Tried: 0.065 actual time: 0.071976 delta: 0.006976
Tried: 0.067 actual time: 0.071974 delta: 0.004974
Tried: 0.069 actual time: 0.075974 delta: 0.006974
Tried: 0.071 actual time: 0.075974 delta: 0.004974
Tried: 0.073 actual time: 0.079975 delta: 0.006975
Tried: 0.075 actual time: 0.079978 delta: 0.004978
Tried: 0.077 actual time: 0.083973 delta: 0.006973
Tried: 0.079 actual time: 0.083976 delta: 0.004976
Tried: 0.081 actual time: 0.087976 delta: 0.006976
Tried: 0.083 actual time: 0.087974 delta: 0.004974
Tried: 0.085 actual time: 0.091976 delta: 0.006976
Tried: 0.087 actual time: 0.091976 delta: 0.004976
Tried: 0.089 actual time: 0.095976 delta: 0.006976
Tried: 0.091 actual time: 0.095976 delta: 0.004976
Tried: 0.093 actual time: 0.099977 delta: 0.006977
Tried: 0.095 actual time: 0.099975 delta: 0.004975
Tried: 0.097 actual time: 0.103976 delta: 0.006976
Tried: 0.099 actual time: 0.103976 delta: 0.004976

nobody wrote on Wednesday, December 19, 2007:

I wouldn’t limit the fps, just control all movement and animation according to how much time has passed since the last frame :smiley:

** NOTE: I’m a n00b :stuck_out_tongue: **

purew wrote on Saturday, December 22, 2007:

The thread is more about a possible inaccuracy in the glfwSleep-function than what kind of graphics-update-mechanism I use in my game.

elmindreda wrote on Sunday, December 23, 2007:

Please file a bug report with this information so it doesn’t get lost. I will look into this as soon as possible.