美文网首页OpenGL
OpenGL 矩阵堆栈

OpenGL 矩阵堆栈

作者: 寻常_0 | 来源:发表于2019-05-20 11:19 被阅读0次

    矩阵堆栈的使用

    //类型
    GLMatrixStack::GLMatrixStack(int iStackDepth = 64);
    
    //在堆栈顶部载入一个单元矩阵
    void GLMatrixStack::LoadIdentity(void);
    
    //在堆栈顶部载⼊任何矩阵 //参数:4*4矩阵
    void GLMatrixStack::LoadMatrix(const M3DMatrix44f m);
    
    //矩阵乘以矩阵堆栈顶部矩阵,相乘结果存储到堆栈的顶部
    void GLMatrixStack::MultMatrix(const M3DMatrix44f);
    
    //获取矩阵堆栈顶部的值 GetMatrix 函数 
    //为了适应GLShaderMananger的使⽤用,或者获取顶部矩阵的副本
    const M3DMatrix44f & GLMatrixStack::GetMatrix(void);
    void GLMatrixStack::GetMatrix(M3DMatrix44f mMatrix);
    

    压栈、出栈

    //将当前矩阵压入堆栈(栈顶矩阵copy 一份到栈顶)
     void GLMatrixStack::PushMatrix(void);
    
    //将M3DMatrix44f 矩阵对象压入当前矩阵堆栈
    void PushMatrix(const M3DMatrix44f mMatrix);
    
    //将GLFame 对象压入矩阵对象
    void PushMatrix(GLFame &frame);
    
    //出栈(出栈指的是移除顶部的矩阵对象)
    void GLMatrixStack::PopMatrix(void);
    

    根据上述API的说明,可以根据一张图,清楚地查看堆栈信息的变化


    矩阵入栈、相乘、出栈流程
    1. 当使用PushMatrix方法,会将栈顶信息复制一份,放入栈顶。
      2.使用MultMatrix方法做矩阵相乘时,将该矩阵与栈顶矩阵相乘,覆盖栈顶矩阵。
      3.使用PopMatrix做出栈操作时,移除栈顶矩阵对象。(根据栈的特点,只能pop栈顶)
      4.使用LoadMatrix加载矩阵到栈顶,若没有传参数矩阵,默认将单元矩阵压入栈顶

    相关文章

      网友评论

        本文标题:OpenGL 矩阵堆栈

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