通俗解释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()的作用的更多相关文章
- Spring的IOC原理[通俗解释一下]
Spring的IOC原理[通俗解释一下] 1. IoC理论的背景我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑. 图 ...
- java web中Jdbc访问数据库步骤通俗解释(吃饭),与MVC的通俗解释(做饭)
一.Jdbc访问数据库步骤通俗解释(吃饭) 1)加载驱动 Class.forName(“com.microsoft.jdbc.sqlserver.SQLServer”); 2) 与数据库建立连接 Co ...
- JVM分代通俗解释
JVM分代通俗解释 学习了:https://www.cnblogs.com/zgghb/p/6428395.html
- Oracle 0至6级锁的通俗解释及实验案例_ITPUB博客 http://blog.itpub.net/30126024/viewspace-2156232/
Oracle 0至6级锁的通俗解释及实验案例_ITPUB博客 http://blog.itpub.net/30126024/viewspace-2156232/
- [转帖]通俗解释 AWS 云服务每个组件的作用
你有听说过 ContainerCache,ElastiCast 和 QR72 这些 AWS 的新服务吗? 没有就对了,这些都是我编的:) 不过,AWS 有 50 多个服务,从名称也不能看出这些服务是做 ...
- 小波变换(wavelet transform)的通俗解释(一)
小波变换 小波,一个神奇的波,可长可短可胖可瘦(伸缩平移),当去学习小波的时候,第一个首先要做的就是回顾傅立叶变换(又回来了,唉),因为他们都是频率变换的方法,而傅立叶变换是最入门的,也是最先了解的, ...
- 傅里叶变换通俗解释及快速傅里叶变换的python实现
通俗理解傅里叶变换,先看这篇文章傅里叶变换的通俗理解! 接下来便是使用python进行傅里叶FFT-频谱分析: 一.一些关键概念的引入 1.离散傅里叶变换(DFT) 离散傅里叶变换(discrete ...
- 关于WIndows内核自映射方案的通俗解释
在一次操作系统课程上听老师说了这么一个有意思的东西,windows的自映射方案居然达到了把4K的页目录的线性地址“藏”在4M页表里的效果,感觉甚是奇特,于是乎就想着说怎么去算.光会算之后仍旧不满足,我 ...
- [转]Spring的IOC原理[通俗解释一下]
1. IoC理论的背景我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑. 图1:软件系统中耦合的对象 如果我们打开机械 ...
随机推荐
- saltstack内置执行模块shadow
shadow用于命令行管理shadow文件 salt.modules.shadow.default_hash() 用户未设置密码的默认哈希 例:salt '*' shadow.default_hash ...
- 判断终端是ios还是安卓的一些妙用
最近遇到一个项目 要求有两个icon(就是下载地址 下载安卓的apk 和ios的安装包) 一开始的方案是 什么设备都显示这两个icon 但是后来老大说这样不好 安卓用户给他下载ios 也不行 ...
- uitableview滚动到最后一行
本文转载至 http://mrjeye.iteye.com/blog/1278521 - (void)scrollTableToFoot:(BOOL)animated { NSInteger s = ...
- Idiomatic Phrases Game(图论最短路)
Idiomatic Phrases Game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/O ...
- Visual studio 创建文件时自动添加备注
Visual studio 创建文件时自动添加备注 描述 要求每回添加一个类,普通类或单元测试类文件头自动添加备注, 比如:Copyright, FileName, Author and so on. ...
- [note]可持久化Trie
可持久化Trie 参考可持久化线段树的思想,修改的时候先直接复制,再对需要修改的点新建节点 可持久化Trie也是同样的做法,假设现在需要在原本Trie的基础上插入一个字符串 先把上个Trie的对应节点 ...
- 程序运行之ELF文件结构
ELF目标文件格式的最前部是ELF文件头.包含了整个文件的基本属性.比如ELF文件版本,目标机器型号,程序入口地址等.然后是ELF的各个段,其中ELF文件中与段有关的重要结构就是段表.段表描述了ELF ...
- MainWindows
开发带有菜单栏状态栏等常用windows应用时候使用
- iOS base64编码 MD5 加密
//创建一个Base64编码的NSString对象 //字符串 转二进制 NSData *nsdata = [@"iOS Developer Tips encoded in Base64&q ...
- 【LeetCode】【数组归并】Merge k Sorted Lists
描述 Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity ...
转载▼