首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解gluLookAt

理解gluLookAt
EN

Stack Overflow用户
提问于 2014-12-05 10:12:37
回答 1查看 396关注 0票数 0

我正在绘制原图中的斧头,并将它们固定在适当的位置,我试图用glLookAt旋转我的相机:

代码语言:javascript
复制
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
DrawAxes();     // Draws X-axis in red, Y in green, Z in blue
glRotated( m_dRotX, 1.0, 0.0, 0.0 );
glRotated( m_dRotY, 0.0, 1.0, 0.0 );
glRotated( m_dRotZ, 0.0, 0.0, 1.0 );
gluLookAt( m_dCameraPos_X, m_dCameraPos_Y, m_dCameraPos_Z, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0 );
SwapBuffers( m_pDC->m_hDC );

从一个位置( 0,0,100 )开始,我围绕Y轴旋转,我希望看到红条(X轴)变短,蓝色条(Z轴)变长,但什么都没有移动。我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-05 12:51:19

您的问题是由代码中给出的操作顺序引起的:您重置矩阵堆栈,绘制所有内容,然后设置摄像机参数。但在下一次电话会议之前,glLoadIdentity会重新审查这些数据。

修正后的代码版本如下所示

代码语言:javascript
复制
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glMatrixMode( GL_MODELVIEW );

//Reset stack
glLoadIdentity();

//Set viewmatrix from camera
glRotated( m_dRotX, 1.0, 0.0, 0.0 );
glRotated( m_dRotY, 0.0, 1.0, 0.0 );
glRotated( m_dRotZ, 0.0, 0.0, 1.0 );
gluLookAt( m_dCameraPos_X, m_dCameraPos_Y, m_dCameraPos_Z, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0 );

//Draw using the viewmatrix
DrawAxes();     // Draws X-axis in red, Y in green, Z in blue

SwapBuffers( m_pDC->m_hDC );
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27313490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档