The problem: my fog is stationary and does not move along with the camera. Looking through the archives, this seems to be a common issue and is usually caused by transformations with the projection matrix. However, I don't think this is what I did. Is there someone willing to go over this piece of code (I've simplified it as much as possible) and help me out? I've been stuck for too long...

void init(void)
{
[...]
float FogCol[3]={0.8f,0.8f,0.8f};
glFogfv(GL_FOG_COLOR,FogCol);
glFogf(GL_FOG_DENSITY, 1.f);
glFogi(GL_FOG_MODE, GL_LINEAR);
glFogf(GL_FOG_START, 4000);
glFogf(GL_FOG_END, 5000);
glEnable(GL_FOG);

[...]
}

void display(void)
{
[...]
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();

glutPostRedisplay();

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glPushMatrix();
glTranslatef(0.0,0.0,ffwd[frame]);

[...]
glPopMatrix();
glutSwapBuffers();
glFlush();
}

void reshape(int w, int h)
{
glMatrixMode(GL_PROJECTION);
glLoadIdentity(); // Reset the camera
gluPerspective(75,(GLfloat)w/(GLfloat)h,10.f,5000.0f);

glMatrixMode(GL_MODELVIEW);
glLoadIdentity(); // Reset the drawing perspective

glViewport (0, 0, (GLsizei) w, (GLsizei) h);
}

int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB);
glutInitWindowSize(WIDTH,HEIGHT);
glutCreateWindow ("Walking");
init ();
glutReshapeFunc(reshape);
glutDisplayFunc(display);
glutMainLoop();

return 0;
}