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的改变,希望高手给我解答一下,我新手,也没有分。。等有分了一定给大家。。。谢谢
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的改变,希望高手给我解答一下,我新手,也没有分。。等有分了一定给大家。。。谢谢
...全文
相关推荐
opengl在MFC平台上绘制三维图形并实现旋转移动缩放
**OpenGL在MFC中的集成**:在MFC中使用OpenGL,需要创建一个继承自CWnd的自定义窗口类,然后重写OnCreate()函数,以便初始化OpenGL上下文。
基于mfc的opengl基础程序
这个过程可以通过glClear(), glLoadIdentity(), gluLookAt(), glVertexPointer(), glEnableClientState(), glDrawArrays
基于MFC的opengl绘球体
总结起来,这个基于MFC的OpenGL项目展示了如何在MFC环境中创建一个基本的OpenGL上下文,并使用`glutSolidSphere`函数绘制一个球体。
MFC 画球 图形学 圆
接下来,我们需要设置OpenGL环境,并启用深度测试,确保正确的前后遮挡关系。然后,创建一个OpenGL上下文并绑定到MFC窗口。在MFC框架中,这通常通过重载OnCreateClient函数实现。
OpenGL几个有用的实例
首先,你需要创建一个MFC对话框应用程序项目,然后在对话框类中添加OpenGL初始化、绘图和清理的函数。1.


图形处理/算法
