OpenGL的glLoadIdentity函数

a5603919 2013-10-20 11:23:16
RT~~书上说glLoadIdentity()函数是用于设置当前矩阵为单位矩阵,所有矩阵变换之前都要调用这个函数,这里我有点疑惑了,单位矩阵与其他矩阵相乘不是还是得到原来的矩阵么?
glLoadIdentity();
glTranslatef(0.0,0.0,1)//把当前矩阵与一个表示移动物体的矩阵相乘。

在调用了glLoadIdentity()语句之后,当前矩阵不是已经变成了单位矩阵了吗??再调用glTranslatef语句,把当前矩阵与一个(0.0,0.0,1)矩阵相乘不是还是得到原来的矩阵么?
这条语句的意义在哪里呢??跪求各位大哥解答。。初学OPENGL菜鸟求了。。。。
...全文
316 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ssmtree 2013-12-12
  • 打赏
  • 举报
回复
引用 楼主 a5603919 的回复:
RT~~书上说glLoadIdentity()函数是用于设置当前矩阵为单位矩阵,所有矩阵变换之前都要调用这个函数,这里我有点疑惑了,单位矩阵与其他矩阵相乘不是还是得到原来的矩阵么? glLoadIdentity(); glTranslatef(0.0,0.0,1)//把当前矩阵与一个表示移动物体的矩阵相乘。
这句话是不对的,矩阵变换前,一般需要调用的是glPushMatrix()和glPopMatrix(),以保持矩阵变换仅对变换的部分有效,而不是使用glLoadIdentity(),这个函数是重置矩阵
彩阳 2013-10-25
  • 打赏
  • 举报
回复
是上一步产生的矩阵。OpenGL内部维持着一个矩阵堆栈。
a5603919 2013-10-22
  • 打赏
  • 举报
回复
先谢谢2位解答小弟的问题,再问一下,既然不是矩阵乘法,那glTranslate作用的是又glLoadIdentity产生的单位矩阵呢还是其他矩阵呢???
寻开心 2013-10-22
  • 打赏
  • 举报
回复
就是平移操作, 不要当作矩阵乘法来理解
彩阳 2013-10-21
  • 打赏
  • 举报
回复
矩阵乘法和glTranslate()函数是两码事。 glTranslate()只是将矩阵的第12、13、14号元素增加了x、y和z。 矩阵乘法要比这复杂。

8,303

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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