MFC OpenGL gluLookAt

magic_an magic_an 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
想做一个基于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的改变,希望高手给我解答一下,我新手,也没有分。。等有分了一定给大家。。。谢谢
...全文
评论 8
收藏 已收藏
分享
返回顶部
magic_an
图形处理/算法 19,463 成员 50,678 内容