Ok, I’ll give it a go.
First, put all your theories and assumptions aside for now. I think they’re tripping you up.
Now, let’s define a 90x90 degree “symmetric” perspective frustum so you can see what’s in front of the eyepoint, and you can verify that you’ve at least got a respectable viewing matrix active:
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
glFrustum( -1, 1, -1, 1, 1, 10000 );
glMatrixMode( GL_MODELVIEW );
And make sure you defined your viewing matrix (gluLookAt) to put the objects at least 1 unit or greater distance in front of the eyepoint (just because we defined our near clip 1 meter distant from the eye).
Now how do we know that’s a 90x90 degree symmetric frustum? Well, L=-R and B=-T, so it’s symmetric. And to the 90x90… Eyepoint is at 0,0,0 in EYE-SPACE. The last “1” says the plane of the screen (i.e. near clip plane) is 1 unit down the -Z axis in a plane perpendicular to this axis. And the first -1,1 pair says the screen is 2 units wide. Well, that forms a 45/45/90 triangle [ (0,0,0)-(1,0,-1),(-1,0,-1) ], with the 90 degrees at the eye. So, it is.
Can you see your objects in front of the eye? Anywhere within 90 degrees of straight forward and you will, as long as they’re between 1 and 10,000 units in front of the eye.
Now let’s skew this symmetric perspective frustum to an “assymetric” perspective frustum (i.e. off-axis perspective frustum) very slowly, gradually skewing it to look off to the left in eye-space. Iteratively try these instead:
glFrustum( -1.01, 0.99, -1, 1, 1, 1000000 );
glFrustum( -1.02, 0.98, -1, 1, 1, 1000000 );
glFrustum( -1.05, 0.95, -1, 1, 1, 1000000 );
glFrustum( -1.1, 0.9, -1, 1, 1, 1000000 );
Do you still see your objects? Congrats! You’re doing off-axis perspective and you can still see the scene. They should be gradually shifting right in the frustum, as your frustum skews off toward the left in eye-space.
Now are you gonna do this incremental stuff in your code? No, of course not. You’re going to define where in the real-world your “screen” is and compute viewing and frustum parameters to give you that slice into the world.