glLoadIdentity()函数真正的意义是什么

zhangda12 2010-03-21 09:50:36
书上说初始化单位矩阵,这个初始化是什么意思?我的理解是将当前的坐标系变为最初的那个坐标系,
即自己在原点,右X正方形,上Y正方向,前Z正方向。但是执行了这样的代码后

glTranslatef(2,1,0);
glutWireCube(1);

glLoadIdentity();

glutWireCube(1);
却只显示了一个立方体,不是应该俩个的吗,在2,1, 0一个 ,在0,0,0一个

void reshape(int w,int h)
{
glViewport(0,0,w,h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective45,(float)w/(float)h,1,50);
} 初始化的环境

如果我想经过了N次变化后例如
glRotatef(x,1,0,0);
glTranslatef(x1,0,0);
glRotatef(y,0,1,0);
glTranslatef(0,y1,0);
后再将坐标变回到初始状态,应该怎么弄???????
...全文
612 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
vcchendefu 2012-12-09
  • 打赏
  • 举报
回复
就相当于在经过一通乱七八糟的移动后,当你为画完一个图形而高潮不断时候,这时如果你想画一个独立于他的另一个图形,你会发现,原来的屏幕中心已经被你移动到不知道哪去了,这时候用这个函数,就轻松解决了复位问题,你可以继续你的移动之旅了,当然,前面移动过的要保存栈空间的。
zhangda12 2010-03-23
  • 打赏
  • 举报
回复
UP~
degree_37 2010-03-22
  • 打赏
  • 举报
回复

glpushmatrix();

glRotatef(x,1,0,0);
glTranslatef(x1,0,0);
glRotatef(y,0,1,0);
glTranslatef(0,y1,0);

glPopMatrix();
zhangda12 2010-03-22
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 bdxxxx 的回复:]
glLoadIdentity();的意思就是不管目前的矩阵是什么样的,
都设成
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1


glPushMatrix();和glPopMatrix();成对使用保存矩阵的变换。
[/Quote]
这个单位矩阵具体的意思是什么呢??是程序运行初始那个坐标系吗???
如果是的话,为什么上面贴出的程序只显示了一个立方体呢???
各位高手们帮帮我吧~~这个我有急用~~!!!!分数只有这么点了··不好意思~~~
在这先谢谢大家了.....
zhangda12 2010-03-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 fandh 的回复:]
引用 2 楼 zhangda12 的回复:
也许你没明白我什么意思,
我的意思是经过了N此变换后,在这之前已经经过了N次的glPushMatrix()与glPopMatrix(),此时的坐标系已经不知道是什么方向了,无法通过一连串的glPopMatrix()回到初始状态,那应该怎么样才能回去??
用glLoadIdentity()????还是glLoadMatrix()等函数能实现那样的功能……
[/Quote]
但是如何实现呢?????
bdxxxx 2010-03-22
  • 打赏
  • 举报
回复
glLoadIdentity();的意思就是不管目前的矩阵是什么样的,
都设成
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1


glPushMatrix();和glPopMatrix();成对使用保存矩阵的变换。
fandh 2010-03-22
  • 打赏
  • 举报
回复
但是,由于是堆栈,这样直接用,可能会有问题!只能是对当前的堆栈起作用好像!
fandh 2010-03-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zhangda12 的回复:]
也许你没明白我什么意思,
我的意思是经过了N此变换后,在这之前已经经过了N次的glPushMatrix()与glPopMatrix(),此时的坐标系已经不知道是什么方向了,无法通过一连串的glPopMatrix()回到初始状态,那应该怎么样才能回去??
用glLoadIdentity()????还是glLoadMatrix()等函数能实现那样的功能呢?????
[/Quote]
有这个功能的!
zhangda12 2010-03-22
  • 打赏
  • 举报
回复
也许你没明白我什么意思,
我的意思是经过了N此变换后,在这之前已经经过了N次的glPushMatrix()与glPopMatrix(),此时的坐标系已经不知道是什么方向了,无法通过一连串的glPopMatrix()回到初始状态,那应该怎么样才能回去??
用glLoadIdentity()????还是glLoadMatrix()等函数能实现那样的功能呢?????

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧