glLoadIdentity(),glPushMatrix(),glPopMatrix()的作用
对于glLoadIdentity(),glPushMatrix(),glPopMatrix()的作用虽然网上有很多的帖子,而且都试图解释得很详细,但是效果总是越说越黑,模棱两可的。今天我就简单滴说几句,言简意赅,希望大家随便看看之余能把这些个问题搞清楚了。glLoadIdentity()的作用就是把矩阵堆栈中的在栈顶的那个矩阵置为单位矩阵,好让之前的任何变换都不影响后面的变化。打个比喻,glLoadIdentity()的作用就是把原来做好的橡皮泥模型重新又变成了橡皮泥,这样你前面做的模型的样子就不会影响后面的模型,后面你怎么捏它就怎么像,比如glLoadIdentity()之后你调用了平移函数glTranslatef(1.0, 0.0, 0.0),那么堆栈的栈顶首先是4×4的单位矩阵,然后因为glTranslatef便成了(1.0, 0.0, 0.0,1.0)(注意坐标在OpenGL中的存储都是四位数的),以后的变换就将基于这个坐标!
glPushMatrix(),glPopMatrix()这两个函数是搭配使用的,就用红宝书中的例子给大家解释一下glPushMatrix()的作用是把矩阵压入栈中保存起来,留着以后再用,就好象把子弹压入枪膛一样。但这个压子弹不是简单滴丫,它是把和弹夹的最顶的那颗子弹一模一样的子弹压入弹夹。假如说弹夹的子弹从下往上装的子弹各不相同(大家不必纠结于此,现实生活中是不是这样并不重要),依次为A1型子弹,B2型子弹,C3型子弹glPushMatrix()的作用就是现时打造一颗C3型子弹并把它压入弹夹,于是弹夹最顶端的两颗子弹是一样的,都是C3型的子弹,随后所作的平移变化旋转变换等都是在最上面那颗C3子弹上所作的,并不影响下面的那颗C3子弹,直到glPopMatrix()把最上面的那颗C3子弹发射出去,让下面的那颗C3子弹成为弹夹最顶上的那颗。
glLoadIdentity(),glPushMatrix(),glPopMatrix()的作用相关推荐
- 通俗解释glLoadIdentity(),glPushMatrix(),glPopMatrix()的作用 (
原文地址如下: http://blog.sina.com.cn/s/blog_70c3d9ed010122bp.html#cmt_56C57036-7F000001-15BB06C27-948-8A0 ...
- glPushMatrix()/glPopMatrix() glLoadMatrixf()
glPushMatrix()/glPopMatrix() & glLoadMatrixf() 这三个函数你搞清楚了没? 头大啊.. http://www.gamedev.net/communi ...
- 小白学opengl之glpushmatrix()与glpopmatrix()的作用
当你做了一些移动或旋转等变换后,使用glPushMatrix(); OpenGL 会把这个变换后的位置和角度保存起来. 然后你再随便做第二次移动或旋转变换,再用glPopMatrix(); OpenG ...
- glPushMatrix和glPopMatrix的作用
glPushMatrix.glPopMatrix操作其实就相当于栈里的入栈和出栈. 许多人不明白的可能是入的是什么,出的又是什么. 例如你当前的坐标系原点在你电脑屏幕的左上方.现在你调用glPushM ...
- glPushMatrix/glPopMatrix简介及示例(在不同位置绘制图形)
glPushMatrix()函数 glPushMatrix()函数是OpenGL中的一个栈操作函数,用于将当前矩阵压入栈中. 在OpenGL中,矩阵是用来对三维坐标进行变换的工具.例如,使用glTra ...
- 《高效学习OpenGL》之 操作矩阵堆栈 glPushMatrix(),glPopMatrix()
glPushMatrix(); //把当前堆栈中的所有矩阵都下压一级.当前矩阵堆栈是由glMatrixMode()指定的. glPopMatrix(); //把堆栈顶部的那个矩阵弹出堆栈,销毁被弹出的 ...
- opengl 知识点1
1>:glFlush: 就是强制刷新,要知道OPENGL是使用一条渲染管线线性处理命令的,一般情况下,我们提交给OPENGL的指令并不是马上送到驱动程序里执行的,而是放到一个缓冲区里面,等这个缓 ...
- 通俗解释glLoadIdentity(),glPushMatrix(),glPopMatrix()的作
对于glLoadIdentity(),glPushMatrix(),glPopMatrix()的作用虽然网上有很多的帖子,而且都试图解释得很详细,但是效果总是越说越黑,模棱两可的.今天我就简单滴说几句 ...
- OpenGL编程指南4:双缓冲实现运行
1.前言 绘制一个旋转的方块,主要为了说明glutSwapBuffers()函数的用法. 同时也为了学习如何使用GLUT控制输入设备,并打开或关闭空闲处理函数. 2.OpenGL编程及程序剖析 /** ...
最新文章
- 【ACM】杭电OJ 1181
- python搭建环境是什么_python虚拟环境是什么?python虚拟环境的介绍
- 必考题:子类继承父类,初始化以及方法调用顺序
- webpack.config.js====插件purifycss-webpack,提炼css文件
- Linux上如何查看物理CPU个数,核数,线程数
- Java Web学习(七)HttpServletResponse(客户端响应)
- eclipse_中的注释_快捷键
- [css] 当拿到一个新的项目,让你对这个项目的css做下架构设计,你该如何下手?
- java xml导出_java 导出xml文件的四种方式
- java集合类分析-hashset
- weex npm 报错 cb() never called!
- 海康服务器协议,国标流媒体服务器GB28181协议和海康设备的交互过程记录
- Ubuntu 16.04安装crossover17 并安装 TIM
- vsftpd 操作手册 - 完整版
- Jasperreport_6.18的吐血记录三之简易交叉表 + 页面预览和导出
- C# dataGridView中插入excel表格
- 如何用ssh隧道绕过防火墙
- VHDL实现USART
- python飞机大战实验报告心得_Python学习之路「第七篇」-Pygame之飞机大战1
- Labview | VDM与VAS2018下载