OpenGL-矩阵压栈出栈浅析

2019-05-20  本文已影响0人  Tobesky

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

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

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

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

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

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

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

函数的作用

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

mode的可选值

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

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

上一篇下一篇

猜你喜欢

热点阅读