Suen,

I'm just going to throw a few things at you. I think you may be confusing yourself. I'd rename some of your variables like 'cameraTarget' should be 'cameraTargetPos' so you clearly identity a position VS a direction vector. It's important not to get those confused.

For rotation, you can just easily make a rotation matrix and multiply that by your viewMatrix.

I'm not familiar with the glm library, but I saw a glm::rotate function that I believe makes a rotation matrix. Then you can just do...

viewMatrix = rotationMatrix*viewMatrixAxes*camPosTranslation;

(or put rotationMatrix at the end) -- I can't remember what way OpenGL multiplies it's matrices.

Good luck!

Jeff.

Well changing to this actually solved the problem, thanks. Thanks for the name-change suggestion, you're right that I shouldn't confuse a position with a vector, my bad.

But honestly I'm still wondering what exactly I'm doing wrong in the original code. I'm merely changing the position of my camera's reference(target) point. To rotate it I switch to a spherical coordinate system, alter the correct element of the coordinate and switch back to the cartesian coordinate system, and then calculate the look/forward vector. The camera position remain the same but since the camera's reference point now has changed **(cameraTargetPos-cameraPos)** should result in a new vector which should be rotated by some amount. Am I thinking this wrong?

edit: changed the name of cameraTarget to cameraTargetPos in my first post as suggested.