Настройте параметры поля зрения.Технически то, что вы хотите сделать, проще, если сделать это, используя glFrustum вместо gluPerspective .
// Protect against a divide by zero
if ( height == 0 )
height = 1;
// Setup our viewport.
glViewport( 0, 0, ( GLint )width, ( GLint )height );
// change to the projection matrix and set our viewing volume.
glMatrixMode( GL_PROJECTION );
glLoadIdentity( );
// supply some sensefull value for this; ideally let the user adjust it somehow
exterm float Zoom;
// near far should tightly wrap the actually visible set of objects. Hardcoded values
// like 0.1 ... 1000.f are problematic. Also your choosen value range slices your viewport
// into 10000 depth slices. Say you get only a 16 bit depth buffer already in the lineary
// slicing ortho projection a OpenGL length units in depth would recieve only about 6
// slices. In perspective mode the slice density follows a 1/depth law. So already at depth
// 10 you'll run into depth resolution problems.
glFrustum(-Zoom * width, Zoom * width, -Zoom * height, Zoom * height, near, far);
// Switch back to the modelview
glMatrixMode( GL_MODELVIEW );
Обратите внимание, что этот код принадлежит функции отображения.Любой учебник, который устанавливает область просмотра и проекцию в обработчике изменения формы окна, очень плохой стиль;не следуй за этим.