美文网首页
OpenGL-矩阵压栈出栈浅析

OpenGL-矩阵压栈出栈浅析

作者: Tobesky | 来源:发表于2019-05-20 00:27 被阅读0次

OpenGL绘制图形需要经过变化才能达到用户目的,而变换是通过矩阵进行操作的

OpenGL一般通过视图变换、模型变换、投影变换等变换后会呈现新的状态(状态机)

而当我们在经过一系列变换后再想回到原来的状态就需要依赖OpenGL提供给我们的两个函数来实现

  • 矩阵压栈 glPushMatrix()
  • 矩阵出栈 glPopMatrix()

首先要明确一点,就是对于矩阵的操作都是针对矩阵的栈顶来操作的

当前矩阵即为矩阵栈的栈顶元素

对当前矩阵进行平移、旋转等的变换操作也就是对栈顶矩阵的修改

当经过一系列的变换后,栈顶矩阵被修改,此时调用glPopMatrix()时,栈顶矩阵被弹出,且又会恢复为原来的状态。

函数的作用

OpenGL对于多种矩阵变换操作,控制这些操作的命令主要用到glMatrixMode(GLenum mode);,它的作用是指定用哪个矩阵作为当前矩阵,mode用于指定哪一种矩阵栈是其后矩阵操作的目标

mode的可选值

  • GL_MODELVIEW: 把其后的矩阵操作施加于造型视图矩阵栈。(默认)
  • GL_PROJECTION: 把其后的矩阵操作施加于投影矩阵栈。
  • GL_TEXTURE: 把其后的矩阵操作施加于纹理矩阵栈。

这三种模式分别对应了三种矩阵栈

在场景中存在多种矩阵变换时,glPushMatrix()glPopMatrix()通常要结合glMatrixMode(GLenum mode)运用,系统才知道具体操作的是哪个矩阵栈。

  • modelview矩阵里只能保存平移,旋转和缩放
  • project矩阵里只能保存投影矩阵
  • viewport矩阵里只能保存二维平移和缩放。

相关文章

  • OpenGL-矩阵压栈出栈浅析

    OpenGL绘制图形需要经过变化才能达到用户目的,而变换是通过矩阵进行操作的。 OpenGL一般通过视图变换、模型...

  • OpenGL_矩阵压栈和出栈

    1. 压栈和出栈的理解 压栈出栈操作的是矩阵 用来记录矩阵的状态 压栈PushMatrix和出栈PopMatrix...

  • OpenGL 出栈压栈理解分析

    1.OpenGL压栈出栈作用概念 1.压栈出栈操作的是矩阵,一般分为模型视图矩阵和投影矩阵 2.出栈压栈是针对顶点...

  • OpenGL学习笔记五

    使⽤矩阵堆栈 压栈.出栈 压栈: 存储一个状态出栈: 恢复⼀个状态 仿射变换

  • Java实现栈

    数组栈:压栈、出栈、返回栈顶元素 链式栈:压栈、出栈、返回栈顶元素

  • OpenGL笔记六:纹理常用API(一)

    前言 期待您移步上篇:OpenGL笔记五:综合实例理解-压栈、出栈、堆栈矩阵相乘、矩阵相乘、向量相乘 纹理 纹理只...

  • OpenGL向量/矩阵、压栈/出栈

    我们大家可能对矩阵的乘法有点模糊了,不用担心!我们在这里只需要先明白向量、矩阵的含义,以及在OpenGL中的作用,...

  • OpenGL-矩阵与向量

    OpenGL的矩阵操作 旋转 平移 缩放 压栈/出栈 单位向量-X轴-(1,0,0) 单位矩阵-X,Y,Z 三轴...

  • OpenGL的矩阵压栈与出栈

    初学时,我们通常会对矩阵压栈和出栈这对“难兄难弟”感到疑惑,为什么它们是成对出现的?它们做的又是什么操作呢?那,今...

  • OPenGL 中的矩阵压栈/出栈

    我们知道OPenGL 中的图形变化是用矩阵来记录保存的.OpenGL 矩阵基础变化 简单来讲,当你做了一些移动或旋...

网友评论

      本文标题:OpenGL-矩阵压栈出栈浅析

      本文链接:https://www.haomeiwen.com/subject/hggczqtx.html