MFC OpenGL gluLookAt
想做一个基于MFC的漫游,在OnKeyDown中响应改变gulLookAt视角和视点从而实现漫游功能,但是发现按键时,视角并没有改变,不知道是什么原因,程序如下:
void CWanderView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
float speed=0.2f; //步长
if(VK_SHIFT==nChar) speed=speed*4; //按下SHIFT键,步长乘以4
if (VK_LEFT==nChar)
{
g_angle-=speed*2; //左转
}
if(VK_RIGHT==nChar)
{
g_angle+=speed*2; //右转
}
rad_xz =float(pi*g_angle/180.0f); //计算SIN和COS函数中需要的参数。
///////////////////////观察点的设置/////////////////////
if(VK_UP==nChar)
{
g_eye[2]+=(float)(sin(rad_xz)*speed); // 前进
g_eye[0]+=(float)(cos(rad_xz)*speed);
}
if(VK_DOWN==nChar)
{
g_eye[2]-=(float)(sin(rad_xz)*speed); // 后退
g_eye[0]-=(float)(cos(rad_xz)*speed);
}
g_eye[1]=1.8f;
/////////////////////////设置摄像机,即目标点的位置/////////////
g_look[0]=(float)(g_eye[0]+100*cos(rad_xz));
g_look[2]=(float)(g_eye[2]+100*sin(rad_xz));
g_look[1]=g_eye[1];
// DrawScene(); //场景函数,画网格地面等
glLoadIdentity();
gluLookAt(g_eye[0],g_eye[1],g_eye[2],g_look[0],g_look[1],g_look[2],0.0,1.0,0.0);
CView::OnKeyDown(nChar, nRepCnt, nFlags);
}
程序应该没有问题,基本上都是唐明里那本书里面的,但是我不明白为什么我的gluLookAt函数没有作用呢?我调试过,OnKeyDown消息处理没有问题,对应的按键按下时,会有g_eye和g_look的改变,希望高手给我解答一下,我新手,也没有分。。等有分了一定给大家。。。谢谢