关于OpenGL图形随窗口变形的问题!!求高手指点!
在OnSize函数中的代码是这样的:
void CGLLightView::OnSize(UINT nType, int cx, int cy)
{
CView::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
if (cy==0) // 防止被零除
{
cy=1;// 将Height设为1
}
glMatrixMode(GL_PROJECTION); // 选择投影矩阵
glLoadIdentity();// 重置投影矩阵
gluPerspective(0.0f,(GLfloat)cx/(GLfloat)cy,1.0,100.0);// 计算窗口的外观比
例
glLoadIdentity();
glViewport(0,0,cx,cy);//设视口
}
绘制一个正方形的函数中的代码是这样的:
void CGLLightView::OnDraw(CDC* pDC)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glBegin(GL_QUADS);
glVertex2f(-0.5f,0.5f);
glVertex2f(-0.5f,-0.5f);
glVertex2f(0.5f,-0.5f);
glVertex2f(0.5f,0.5f);
glEnd();
SwapBuffers(m_pDC->GetSafeHdc());
// TODO: add draw code for native data here
}
问题:为什么正方形会变长方形?图形的高和宽跟窗口的高和宽成正比的:窗口拉长,正
方形也拉长!这个问题怎么解决?有人说这是和gluPerspective这个函数设定相关,但应
该怎么设定?是不是还有别的函数在影响这个问题?
请高手指教!!!