The first frame is rendered correctly, but subsequent frames are incorrect or further away or I just get a blank screen. Whats going on?
This is often caused by a failure to realize that OpenGL matrix commands multiply, rather than load over the top of the current matrix. Most OpenGL programs start rendering a frame by setting the ModelView matrix to the identity with a call to glLoadIdentity(). The view transform is then multiplied against the identity matrix with, for example, a call to gluLookAt(). Many new programmers assume the gluLookAt() call will load itself onto the current matrix and therefore fail to initialize the matrix with the glLoadIdentity() call. Rendering successive frames in this manner causes successive camera transforms to multiply onto each other, which normally results in an incorrect rendering.