能找到最好的解释来自:http://www.gamedev.net/topic/489879-glpushmatrixglpopmatrix--glloadmatrixf/

原理:

glPushMatrix didn't fail to push onto the stack; it's job is to push a copy of the current matrix onto a stack of matrices. Those matrices on the stack don't interact at all. You only manipulate the current, top-most, matrix at any given time.

Example 1:

   command                 resultglLoadMatrixf(A)       stack = [A]
glPushMatrix()         stack = [A, A]
glLoadMatrixf(B)       stack = [B, A]
glPopMatrix()          stack = [A]

Example 2:

   command                 resultglLoadMatrixf(A)       stack = [A]
glPushMatrix()         stack = [A, A]
glMultMatrixf(B)       stack = [AB, A]
glPopMatrix()          stack = [A]

注意: glTranslate* 等都是实际调用的是glMultMatrixf

实例:

看下面的代码:

743     glPushMatrix();
744
745     // tramsform camera
746     matrixView.identity();
747     matrixView.rotate(cameraAngleY, 0, 1, 0);
748     matrixView.rotate(cameraAngleX, 1, 0, 0);
749     matrixView.translate(0, 0, -cameraDistance);
750     //@@ the equivalent code for using OpenGL routine is:
751     //@@ glTranslatef(0, 0, -cameraDistance);
752     //@@ glRotatef(cameraAngleX, 1, 0, 0);   // pitch
753     //@@ glRotatef(cameraAngleY, 0, 1, 0);   // heading
754
755     // copy view matrix to OpenGL
756     glLoadMatrixf(matrixView.getTranspose());
757
758     drawGrid();                         // draw XZ-grid with default size
759
760     // compute model matrix
761     matrixModel.identity();
762     //matrixModel.rotateZ(45);        // rotate 45 degree on Z-axis
763     matrixModel.rotateY(10);        // rotate 45 degree on Y-axis
764     matrixModel.translate(0, 1, 0); // move 2 unit up
765
766     // compute modelview matrix
767     matrixModelView = matrixView * matrixModel;
768
769     // copy modelview matrix to OpenGL
770     glLoadMatrixf(matrixModelView.getTranspose());
771
772     drawAxis();
770     glLoadMatrixf(matrixModelView.getTranspose());
不能是glMultMatrixf

转载于:https://www.cnblogs.com/suncoolcat/p/3310640.html

opengl笔记—— glMultMatrixf() 区别 glLoadMatrixf()相关推荐

  1. OPenGL笔记--创建三维图形(立方体)

    文章目录 一.前置知识 二.运行效果 三.具体代码 一.前置知识 通过之前的学习,我们已经知道了如何创建多边形,立方体实际就是多边形围起来的三维图形,例如: 椎体是4个三角形围起来的三维图形: 正方体 ...

  2. OPenGL笔记--创建一个3D场景

    文章目录 一.前言 二.效果展示 三.详细流程 3.1.World.txt文件规则 3.2.加载World.txt 3.3.绘制场景 3.4.交互 四.详细代码 五.举一反三 一.前言 通过前面的学习 ...

  3. 小红书达人笔记与素人笔记的区别,对号入座选达人

    接触小红书的人一定对小红书达人和笔记这两样东西不陌生,但是笔记也分达人笔记和素人笔记.那么小红书达人笔记与素人笔记的区别是什么?各自适用于哪些场景?今天就来和大家好好分享一下其中的奥妙. 一.小红书达 ...

  4. Learn OpenGL 笔记7.1 PBR Theory(physically based rendering基于物理的渲染 理论)

    PBR,或更通常称为基于物理的渲染,是一组渲染技术,它们或多或少基于与物理世界更接近的相同基础理论.由于基于物理的渲染旨在以物理上合理的方式模拟光线,因此与我们的原始光照算法(如 Phong 和 Bl ...

  5. [OpenGL笔记]glut入门(1)

    开头 写在开头,推荐看一下这篇文章涨涨知识OpenGL库文件的区别(glut/glew/glfw/glad/freeglut)和环境配置 不知道从哪扒来的glut的参考文档 代码初识 其实之前学的是g ...

  6. opengl笔记——OpenGL好资料备忘

    Plane Equation 注:面可理解为:连接面上的点与原点,投影相同(为:a*x1+b*x2+c*x3) OpenGL Matrix Class (C++) Overview OpenGL fi ...

  7. Python之OpenGL笔记(38):三种光照通道的合成

    一.目的 1.实现镜面光照射下的棋盘球体: 2.环境光.散射光.镜面光三种光照通道的合成 二.程序运行结果 三.镜面光    现实世界中,当光滑表面被照射时会有方向很集中的反射光.这就是镜面光(Spe ...

  8. OpenGL笔记之矩阵变换(Matrix Transformation)

    本文是学习OpenGL过程中的一篇笔记.在学习过程中,主要参照了大名鼎鼎的 <OpenGL Programming Guide>(中文名<OpenGL编程指南>,有些人还称之为 ...

  9. OpenGL 笔记1 固定管线实例 + 双缓存测试实例

    欲以此分类来记录opengl的学习历程,此为第一篇,所以先来一个固定管线的例子,以及对双缓存的测试. 一.配置环境 写之前,先进行配置,然后再讲内容. 注:第一部分涉及的代码均忽略. [环境配置传送门 ...

最新文章

  1. 今天開始學習silverlight了
  2. Python测试框架pytest(05)fixture - error和failed、fixture实例化、多个fixture
  3. java实体类属性非空判断工具类
  4. Java 泛型(1):基本原理
  5. java 可选参数_超干货详解:kotlin(4) java转kotlin潜规则
  6. [导入]MSIL: call callvirt
  7. idea超炫的自定义模板
  8. HDU 4534 郑厂长系列故事——新闻净化
  9. 喜提 300w 硬核资产!
  10. [Jmeter][基础]Jmeter连接IMPALA
  11. LINUX SHELL获得CPU核心(线程)个数
  12. 建立桌面文件管理格子_win10桌面分区,win10如何创建桌面格子
  13. 可靠性试验顺序应该如何安排?
  14. 【计算机网络】信源编码——香农三大定理
  15. 更改PPT的模板名称
  16. 如何训练好一个神经网络?
  17. linux硬盘ro改为rw,RO,RW,ZI 和scatter file详解(转载)
  18. html怎么显示一个点赞的心形,jquery心形点赞关注效果的简单实现
  19. ZYNQ开发系列——使用AXI4LITE接口进行PS和PL交互
  20. python中的path的使用

热门文章

  1. 虽然“互联网电商”导致大量的“线下实体行业”受到冲击,但是“体验行业”永远不会被“互联网电商”影响
  2. 持有数字货币的手机丢了,数字货币还能找回来吗?该注意些什么?
  3. python入门——P42魔法方法:算数运算1
  4. P1 Human Pose Estimation人体姿态综述估计调研
  5. sql server 监视_监视SQL Server报告服务
  6. alwayson高可用组_AlwaysOn可用性组–好奇心使您的工作更轻松–第4部分
  7. SQL Server中的即时文件初始化概述
  8. sql server 锁定_关于锁定SQL Server的全部
  9. Docker安装elasticsearch-head监控ES步骤 - gmijie的专栏 - CSDN博客
  10. mongoimport csv文件