glPushMatrix 和glPopMatrix图解 ----求别笑

猜想:

openGL在绘制场景时的一般用法是:

首先在函数的开始处用glLoadIdentity()设置当前的矩阵为单位矩阵。

然后在函数中用glPushMatrix()和glPopMatrix()函数进行操作:

 

根据实践判断:

即这两者是分开的,并不是当前矩阵就是栈中的最上端的矩阵。

当一开始进行glLoadIdentity时,在栈中并没有保存任何矩阵,只是将当前矩阵设置为单位矩阵;

当在程序中使用glPushMatrix 时,将当前的矩阵压入栈中

当在程序中使用glPopMatrix时,将栈中栈顶的矩阵取出放在当前矩阵中

 

以上猜想是错误的。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

教训:没有直接看人家给的API说明文档。。。。

 

实际是这样的:

There is a stack of matrices for each ofthe matrix modes. In GL_MODELVIEW mode, the stack depth is at least 32.In the other two modes,GL_PROJECTION and GL_TEXTURE, the depthis at least 2.The currentmatrix in any mode is the matrix on the top of the stack for that mode.

glPushMatrix pushes the current matrix stack down by one, duplicatingthe current matrix. That is, after aglPushMatrix call, the matrix onthe top of the stack is identical to the one below it.

glPopMatrix pops thecurrent matrix stack, replacing the current matrix with the one below it on thestack.

Initially, each of the stacks contains one matrix, anidentity matrix.

红色标注的是current matrix

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1550078.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

glPushMatrix();glPopMatrix();以及glMatrixMode的用法

所有的这几个函数的本质都是对坐标系的操作。 前提知识: 1。每一种矩阵对应着一种坐标系。见图一 2。每一次对矩阵的操作都是对当前矩阵进行的。确切的说,作为一种状态机,每一时刻在矩阵方面只能有一种状态。 3。每一次压栈和出栈都对应着…

opengl中glPushMatrix()he glPopMatrix()用法的真正意义

opengl中图形绘制后,往往需要一系列的变换来达到用户的目的,而这种变换实现的原理是又通过矩阵进行操作的。opengl中的变换一般包括视图变换、模型变换、投影变换等,在每次变换后,opengl将会呈现一种新的状态(这也就是…

opengl入门记录--glPushMatrix和glPopMatrix原理

glPushMatrix、glPopMatrix操作事实上就相当于栈里的入栈和出栈。 很多人不明确的可能是入的是什么,出的又是什么。 比如你当前的坐标系原点在你电脑屏幕的左上方。如今你调用glPushMatrix,然后再调用一堆平移、旋转代码等等,然后再绘图。那…

opengl glPushMatrix()

OpenGL有三个矩阵堆栈,分别是GL_MODELVIEW(模型视图矩阵堆栈)、GL_PROJECTION(投影矩阵堆栈)、GL_TEXTURE(纹理矩阵堆栈),用法和普通堆栈一样; 这里我们只讲模型视图矩阵…

解决:nameerror: name ‘glpushmatrix‘ is not defined

在尝试gym的render()时,出现错误: nameerror: name glpushmatrix is not defined最后解决的办法:更换pyglet包的版本 出现错误时的pyglet版本: 然后将版本更换为: 就可以使用env.render()啦!

glPushMatrix()和glPopmatirx()

OpenGL有三个矩阵堆栈,分别是GL_MODELVIEW(模型视图矩阵堆栈)、GL_PROJECTION(投影矩阵堆栈)、GL_TEXTURE(纹理矩阵堆栈),用法和普通堆栈一样; 这里我们只讲模型视图矩阵…

OpenGL:glPushMatrix();和glPopMatrix();的作用及其原理分析

今天做到一道题,大致就是问glPushMatrix();和glPopMatrix();存在会对图形绘制造成什么影响,为了能够清晰的反应到底会存在什么影响,我特地写了两行代码: 代码①: void draw1() {//glClear(GL_COLOR_BUFFER_BIT); //注…

OpenGL的glPushMatrix和glPopMatrix矩阵栈顶操作函数

在之前的博客中,我就说过后面会详细讲解这两个函数。今天让我们来认识下它们(glPushMatrix和glPopMatrix函数)。 OpenGL中图形绘制后,往往需要一系列的变换来达到用户的目的,而这种变换实现的原理是又通过矩阵进行操作…

在线图片怎么转换成PDF?在线图片转换成PDF步骤介绍

文件格式要转化不知道怎么办?想要网上下载文件格式转换软件,但是却不知道下载哪个好?今天小编小编就给大家分享一下靠谱的小圆象PDF转换器工具,想知道这款软件好不好用?在线图片怎么转换成PDF?那就进来看看吧。 在线图片怎么转换成PDF 小圆象PDF转换…

解决 go mod tidy 加载模块超时

如果go mod tidy 加载模块超时 解决方法 修改GOPROXY: 查看go环境相关信息: go envgo env -w GOPROXYhttps://goproxy.cn

自动化脚本本地可以跑成功云服务器报错:FileNotFoundError:[Errno 2] No such file or directory

出现这种情况,原因之一可能是脚本中某些路径没有使用自动获取,当使用相对路径可能就会报错 把路径改为自动获取之后 self.data get_yaml_data(os.path.join(configs_path, method_path.yaml))再次运行代码就不会报文件找不到的错误了

深度强化学习落地指南总结(二)-动作空间设计

本系列是对《深度强化学习落地指南》全书的总结,这本书是我市面上看过对深度 强化学习落地讲的最好的一本书,大大拓宽了自己对RL落地思考的维度,形成了强化学习落地分析的一套完整框架,本文内容基本摘自这本书,有兴趣的…

HTML+CSS+JS实现【别踩鸡块】,含(源码+思路)

写在前面: 你是否想要掌握人工智能的最新技术和应用?你是否想要成为未来社会的创新者和领导者?你是否想要和全球的优秀导师和同学一起学习和交流?如果你的答案是肯定的,那么欢迎来到床长人工智能教程网站,这…

mysql删除数据不释放物理空间

记录mysql踩过的坑。。。 delete 命令删除数据不会释放服务器物理空间 删除之后需要执行这个命令才会释放物理空间 “optimize table 表名” (注:执行这个命令的时候你的机器需要有足够的物理空间,不然的话会出现这种问题: &…

C语言中动态分配空间的数组,可以使用sizeof求其字节数吗?

C语言中&#xff0c;动态分配的数组&#xff0c;应该注意其使用&#xff01; 和一般数组名还是有很大区别的&#xff0c;如下&#xff1a; #include<stdio.h> #include<stdlib.h>int main(){int a[12];int* b(int* )malloc(sizeof(int)*12);printf("a%d\n&qu…

多传感器数据标定融合完整教程:时间同步+空间同步(Camera+Lidar+IMU+Radar)

多传感器融合是一项结合多传感器数据的综合性前沿内容&#xff0c;主要包括Camera、激光雷达、IMU、毫米波雷达等传感器的融合&#xff0c;在自动驾驶、移动机器人的感知和定位领域中占有非常重要的地位&#xff1b; 随着AI技术的大规模落地&#xff0c;图森、百度、滴滴、Waym…

Jenkin踩过的坑

windows安装目录踩过的坑(2.253版本之后) 以前的版本&#xff0c;安装成windwos服务的话&#xff0c;所有的文件都会在安装目录下 &#xff0c;最近下了个2.253版本在电脑上进行安装的时候&#xff0c;发现安装后&#xff0c;在安装目录下只有少量的几个文件和一个war包&#x…

问道管理:多少钱可以申购新股?

随着中国股市的不断发展&#xff0c;越来越多的人开端进入投资领域。而申购新股是投资中的一种常见方法。那么&#xff0c;多少钱能够申购新股呢&#xff1f;这个问题并不简略&#xff0c;需求从多个视点来剖析。 首先&#xff0c;需求了解什么是申购新股。申购新股&#xff0c…

期权是什么?期权的优缺点是什么?

期权是一种合约&#xff0c;有看涨期权和看跌期权两种类型&#xff0c;也就是做多和做空两个方向&#xff0c;走势标的物对应大盘指数&#xff0c;这也是期权与其他金融工具的主要区别之一&#xff0c;可以用于套利&#xff0c;对冲股票和激进下跌的风险&#xff0c;下文介绍期…

Maya-Mel-1:入门数据类型

简介&#xff1a; maya中其实所有的内容都是用mayamel写的&#xff0c;平时用的时候记录的历史&#xff0c;也都是mel语言 mel语言是区分大小写的 脚本编辑器 这两个框内都可以右键鼠标&#xff0c;比如编辑框&#xff0c;“选项卡”就相当于一个源文件 这里是打开文件、保…