I need to offset a render so that the perspective / vanishing point doesn't change. Or another way to look at it is that I need to adjust the vanishing point in my view so that instead of being at 0,0 xy it's where ever I want it to be.
Imagine a tall iPhone screen with some extruded 3d text at the top of the view. You would see the bottom sides of the extrusion because the camera is below the object. But now move the object to the bottom of the view. Now you see the top sides of the extrusion because the camera is above the object. Same if you move the camera instead of the object. The vanishing point is at 0,0 in the window.
Now let's say I wanted to draw the 3d text as it would look at the top of the screen but I want to draw it at the bottom of the screen. Forget about the cheat of rendering it to a texture and drawing that texture somewhere else. How do I shift everything up or down without changing the perspective? Is there an easy way?
In practice I only need to move the vanishing point up a little in my game. Perspective is key to being able to play. Basically when the ad banner is at the top of the screen the view is smaller height wise. That moves the vanishing point down by half the size of the ad banner, and screws up the game play.
I'm using the standard camera look at matrix function and projection matrix function that is based on the fov...
lookAtMatrix(cameraPos, camLookAt, camUpVector, mView);
matrixPerspective(cameraFOV, near, far, aspect, mProjection);
I'm assuming that I need to change my mProjection somehow.