OpenGL的矩阵压栈与出栈

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

我们先来看看它的代码是怎么实现的,原理又是什么?

  • 矩阵压栈

矩阵压栈的两种方式
方式一:
void PushMatrix(void)
将当前矩阵压入堆栈(栈顶矩阵copy⼀份到栈顶),我们通过一张图来了解一下


原理:

void PushMatrix(void) {
            if(stackPointer < stackDepth) {
                stackPointer++;
                m3dCopyMatrix44(pStack[stackPointer], pStack[stackPointer-1]);
                }
            else
                lastError = GLT_STACK_OVERFLOW;
            }

方式二:
```void PushMatrix(GLFrame& frame)``
将矩阵对象压入当前矩阵堆栈,我们也通过一张图来了解一下


原理:

void PushMatrix(GLFrame& frame) {
            M3DMatrix44f m;
            frame.GetMatrix(m);
            PushMatrix(m);
            }
  • 矩阵出栈

void PopMatrix(void)
绘制完成之后,移除矩阵堆栈中顶部的矩阵移除

以上就是关于OpenGL的矩阵压栈与出栈啦,希望能帮到大家理解。

你可能感兴趣的:(OpenGL的矩阵压栈与出栈)