I'm trying to make my own camera class, and I'm trying to get an idea of how gametutorials made theirs. when i was looking through theirs i found that whenever you strafe you not only add the strafe vector multiplied by speed to the position, you also add this to the current view vector of the camera. When you move forward or backwards you must first subtract the position vector (i know it isn't really a vector, but it seems standard to use a vector as a point class too) from the view vector and then do the same. Why is it done that way? I thought the position vector and view vectors could be maniuplated completely independant for each other. I thought the glu lookat function took care of all of that behind the scenes for you. Well anyway I don't know why it's done that way and I don't want to write anything that i don't understand.

EDIT: in the strafe movement it's only the x and z compontents which are modified, in the forward/backward movement all components are modified.

About the matrices: when they do the rotations with the mouse, I noticed they don't use opengl matrices. Would it be faster to do so? There's quite a bit of multiplication involved, and it takes every scene.