首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gluLookAt与MODELVIEW矩阵

gluLookAt与MODELVIEW矩阵
EN

Stack Overflow用户
提问于 2013-03-08 15:53:08
回答 1查看 2.3K关注 0票数 0

我感觉我理解了模型视图矩阵和gluLookAt的用法。也就是说,通过声明gluLookAt(ex,ey,ez,lx,ly,lz,ux,uy,uz),可以很容易地设置一种直接查看某个点的方法。

我的问题是-由于gluLookAt对当前矩阵进行后乘运算,假设您在调用gluLookAt之前加载标识,并且当前的矩阵模式是modelview,那么如果您绘制一个立方体会发生什么?

所以就像这样:

代码语言:javascript
复制
glMatrixMode(GL_PERSPECTIVE);
glLoadIdentity();
glFrustum(-5, 5, -5, 5, 15, 150);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0, 0, 16, 0, 0, 0, 0, 1, 0);
glutSolidCube(1.0);

在世界坐标中渲染的立方体在哪里?由于某种原因,在这种情况下,它是在世界原点渲染的,您可以在视口中看到它-但为什么?gluLookAt不应该使用视图旋转和平移来修改模型视图矩阵吗?立方体不是应该在内部有摄影机的情况下渲染吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-08 16:26:39

glutSolidCube( 1.0 )绘制以世界原点为中心的边长为1.0的立方体。

因此顶点是:

  • (-0.5,-0.5,-0.5)
  • (-0.5,+0.5,-0.5)
  • (-0.5,+0.5,+0.5)
  • (-0.5,-0.5,+0.5)

<代码>H19( +0.5,-0.5,-0.5)H210H111(+0.5,+0.5,-0.5)

  • (+0.5,+0.5,+0.5)
  • (+0.5,-0.5,+0.5)

现在gluLookAt(0,0,16,0,0,0,0,0,1,0)生成一个modeView矩阵,该矩阵将这些坐标转换为摄影机坐标。

由于摄影机位置仅平移(0,0,16) wrt默认摄影机位置(0,0,0),因此此modelView矩阵基本上将每个顶点平移(0,0,-16)。

明白了吗?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15289184

复制
相关文章

相似问题

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