Original Post
The problem I am having is that when the mouse is being moved up and down at close to equal distances the view quickly ends up looking down. The same thing happens with left and right but in this case the view ends up on one side. the other problemis that I would like the movement in and out of the screen to happen in the direction of the view rather than a fixed axis as is happening now. int DrawGLScene(GLvoid) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); glRotatef(camRotx, 1.0f, 0, 0); glRotatef(camRoty, 0, 1.0f, 0); glRotatef(camRotz, 0, 0, 1.0f); glTranslatef(0, 0, camSpeedz); // skybox origin should be same as camera position sky1.Render(0, 0, 0); return TRUE; } . . . . . case WM_MOUSEMOVE: float prevMouseX, prevMouseY; prevMouseX = mouseX; prevMouseY = mouseY; mouseX = LOWORD(lParam); mouseY = HIWORD(lParam); if ((mouseX - prevMouseX) < 0) camRoty += 0.8f; if ((mouseX - prevMouseX) > 0) camRoty -= 0.8f; if ((mouseY - prevMouseY) < 0) camRotx += 0.8f; if ((mouseY - prevMouseY) > 0) camRotx -= 0.8f; break;