游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2320|回复: 1

gluLookAt函数显示结果不正确!急!小弟都快疯了,请各位

[复制链接]

1

主题

2

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2010-1-22 15:48:00 | 显示全部楼层 |阅读模式
最近在用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号,谢谢!我好把源代码发过来!

24

主题

256

帖子

267

积分

中级会员

Rank: 3Rank: 3

积分
267
发表于 2010-2-5 22:22:00 | 显示全部楼层

Re:gluLookAt函数显示结果不正确!急!小弟都快疯了,请各

gluLookAt(0.0 , 30.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , -1.0);
这种lookAt的设置方式很少见,这将是一种从天空府视大地的的感觉,希望你确定这正是你所需要的,通常情况下向上方向我们指定为Y轴的正向。

当然你说的问题其实并不是因为这个函数。很可能是InitOpenGL();中的视景台没有设置好。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-16 00:28

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表