glPushMatrix()和glPopMatrix()
网上很多讲解上述两个函数原理的文章,但都是越描越黑,越讲越让人糊涂,针对这样的问题,我认为应该先把工程上的问题抽象成简单的数学模型,然后在数学的角度理解起来更为容易。
这里假设我们要处理的三维模型某个状态变量初值为M,这里M是矩阵,那假如说经过一系列的状态变化A1,A2,……,An。
也就是M乘上这n个矩阵——M*A1*A2*……*An,如果这时候我们需要对M进行线性变换,我们需要线性变换直接发生在M身上,假设该线性变换为B,如果直接做变换,就变成了M*A1*A2*……*An*B,看到这时候B并没有直接作用到M身上,这是因为矩阵的乘法不满足交换律。只有极个别的情况下,矩阵乘法可交换。
这时候就需要调用glPushMatrix函数,先把先前的变换入栈,M*A1*A2*……*An就变成了M,然后在做变换,则M*B,最后调用glPopMatrix,把先前的变换出栈,则M*B*A1*A2*……*An,达到了我们想要的结果。
glPushMatrix()和glPopMatrix()相关推荐
- 通俗解释glLoadIdentity(),glPushMatrix(),glPopMatrix()的作用 (
原文地址如下: http://blog.sina.com.cn/s/blog_70c3d9ed010122bp.html#cmt_56C57036-7F000001-15BB06C27-948-8A0 ...
- OpenGL的glPushMatrix和glPopMatrix矩阵栈顶操作函数详解
OpenGL中图形绘制后,往往需要一系列的变换来达到用户的目的,而这种变换实现的原理是又通过矩阵进行操作的.opengl中的变换一般包括视图变换.模型变换.投影变换等,在每次变换后,opengl将会呈 ...
- OpenGL的glPushMatrix和glPopMatrix矩阵栈顶操作函数
在之前的博客中,我就说过后面会详细讲解这两个函数.今天让我们来认识下它们(glPushMatrix和glPopMatrix函数). OpenGL中图形绘制后,往往需要一系列的变换来达到用户的目的,而这 ...
- OpenGL中glPushMatrix和glPopMatrix的原理
glPushMatrix.glPopMatrix操作事实上就相当于栈里的入栈和出栈. 很多人不明确的可能是入的是什么,出的又是什么. 比如你当前的坐标系原点在你电脑屏幕的左上方.如今你调用glPush ...
- 通俗解释glLoadIdentity(),glPushMatrix(),glPopMatrix()的作
对于glLoadIdentity(),glPushMatrix(),glPopMatrix()的作用虽然网上有很多的帖子,而且都试图解释得很详细,但是效果总是越说越黑,模棱两可的.今天我就简单滴说几句 ...
- glPushMatrix 与 glPopMatrix
1.原理讲解 终于明白为什么使用glPushMatrix()和glPopMatrix()的原因了.将本次需要执行的缩放.平移等操作放在glPushMatrix和glPopMatrix之间.glPush ...
- Opengl的glPushMatrix和glPopMatrix理解
glPushMatrix()和glPopMatrix()的配对使用可以消除上一次的变换对本次变换的影响,将本次需要执行的缩放.平移等操作放在两者之间.使本次变换是以世界坐标系的原点为参考点进行. 1) ...
- opengl入门记录--glPushMatrix和glPopMatrix原理
glPushMatrix.glPopMatrix操作事实上就相当于栈里的入栈和出栈. 很多人不明确的可能是入的是什么,出的又是什么. 比如你当前的坐标系原点在你电脑屏幕的左上方.如今你调用glPush ...
- 使用glPushMatrix和glPopMatrix的原因
转自 百度百科 glPushMatrix 函数将当前矩阵堆栈推送,通过一个,复制当前矩阵. 这就是后 glPushMatrix 的调用堆栈的顶部矩阵是它下面的相同的. 1. 原理讲解 终于明白为什么使 ...
- OpenGL编程指南9:裁剪平面+glPushMatrix和glPopMatrix矩阵栈顶操作
1.任意裁剪平面 Opengl中,除了视景体的立方体裁剪平面之外,另外还可以额外指定多达6个裁剪平面,对视景体做进一步限制.每一个平面都由平面公式定义:Ax+By+Cz+D = 0.裁剪平面的指定通过 ...
最新文章
- python 读取图片成为一维数组_python+opencv 图像的数组和矩阵操作
- MySql 统计最近 6 个月内的数据,没有数据默认为显示为 0
- pdfminer3k 官方文档_IPFS官方周报112期
- thinkphp3.2 jquery ajax巧妙使用
- linux 命令详解 十六
- 用python进行数据分析--准备工作
- android消息处理机制原理解析
- H5 打开微信小程序 公众号
- 风变编程python基础语法-第0关-千寻的名字
- 你应当知道的人工智能发展历史
- 星际争霸1-PvPGN战网架设参数
- 我爱天文 - 秋季有大三角吗?
- 2020年Java常问面试题--聂
- AIMP3音乐播放器的漂亮皮肤-IAMP和Minimal Gray
- 云账户合法吗_云账户
- 致那些自嘲码农的苦逼程序员
- php 8进制,PHP中的进制转换
- 『前端大事记』之「几件大事」
- 使用tcpdump抓包实例
- echarts map 地图做出立体效果 | 简单的解
热门文章
- 茶楼软件有哪些管理功能
- 讲解Linux中samba理论讲解及Linux共享访问
- html弹幕播放器源码,高性能HTML5弹幕播放器 Moe2_player
- deepin系统下载速度非常慢解决方法
- 从零开始学androidTabHost标签组件.二十九.
- 如果 —— 拉迪亚德·吉卜林,神作品诗歌,看完后整个人像被了打鸡血一样,超热血、感动、坚强...
- 机器学习之归一化处理
- 我想知道我的IT之路该如何前进
- sql删除表中重复记录_SQL从SQL表中删除重复行的不同方法
- mysql创建库语句