I have a question which I hope you can answer. I have a scene which draws elements with 60 frame per second by using the function: glutTimerFunc(100.0 / 6.0, idle, 0), in which idle does the following:

/* Generate new positions for the objects */
scene.handle_collisions();
scene.update_positions(difference);

glutTimerFunc(100.0 / 6.0, idle, 0);
glutPostRedisplay();
}

In the main function I bind the created shader, draw the objects and unbind the shader. The problem is that when I do not use the shader, the idle function does get called every 0.016 seconds (60 FPS), but when I'm using GLSL, the idle function is called every 0.232 seconds, which is like 4 FPS.