Для задания перспективы не обязательно пользоваться только командами основной библиотеки open32.lib. В комплект поставки OpenGL входит вспомогательная библиотека glu32.lib. Она имеет много хороших функций, которые упрощают жизнь, одна из таких функций - gluPerspective.
Возьмем предыдущий пример и немного исправим функцию OnDraw(...):
void CExampleView::OnDraw(CDC* pDC) { CRect clientRect; CExampleDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here GetClientRect(&clientRect); glViewport(0, 0, clientRect.right, clientRect.bottom); glClearColor (0.5, 0.5, 0.75, 1.0); glClear (GL_COLOR_BUFFER_BIT); glColor3f (1.0, 0.0, 0.5); glLoadIdentity(); gluPerspective(30.0f, clientRect.right/clientRect.bottom, 1.0f, 15.0f); glTranslatef(0.0, 0.0, -10.0); glRotatef(30.0, 1.0, 0.0, 0.0); glRotatef(70.0, 0.0, 1.0, 0.0); glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); DrawCube(); SwapBuffers(pDC->m_hDC); }
Вот собственно и все. Просто заменили функцию glFurstum на glPerspective.