|
最近在用OpenGL编写小游戏,程序框架是基于MFC的,可是遇到了问题!请看代码:
BOOL CTestLookDlg::OnInitDialog()
{
CDialog::OnInitDialog();
InitOpenGL(); //初始化OPENGL
CRect winR;
this->GetClientRect (&winR);
SetResolution(winR.Width () , winR.Height ()); //设置分辨率
gluLookAt(0.0 , 30.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , -1.0);
SetTimer(1 , 1 , NULL); //设置一个计时器,用来定时绘制
return TRUE;
}
然后我的绘制函数里是这样的:
void CTestLookDlg::RenderGLScene()
{
glPushMatrix();
glTranslatef(0.0 , -0.5 , 0.0);
glColor3f(1.0 , 1.0 , 1.0);
glBegin(GL_QUADS);
glVertex3f(-20.0 , 0.0 , -10.0);
glVertex3f(-20.0 , 0.0 , 10.0);
glVertex3f(20.0 , 0.0 , 10.0);
glVertex3f(20.0 , 0.0 , -10.0);
glEnd();
glPopMatrix();
}
可以看到,绘制了一个平面。一开始没什么问题,可是如果我在键盘响应函数OnKeyDown()里面加上这一句(和初始化里的一样):
gluLookAt(0.0 , 30.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , -1.0);
视点就跑到其它地方去了,而不是(0,30,0)这个点了!
这是怎么回事啊?我两次设置的视点都一样啊,为什么显示结果不同呢?
请高手们帮帮忙!谢谢了! 最好留个QQ号,谢谢!我好把源代码发过来! |
|