美文网首页
OpenGL的矩阵压栈与出栈

OpenGL的矩阵压栈与出栈

作者: 夜里昙花现 | 来源:发表于2019-06-13 18:13 被阅读0次

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

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

    • 矩阵压栈

    矩阵压栈的两种方式
    方式一:
    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的矩阵压栈与出栈

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