美文网首页
8. OpenGL中如何使用矩阵堆栈

8. OpenGL中如何使用矩阵堆栈

作者: 吃土豆的Panda | 来源:发表于2019-10-25 15:51 被阅读0次

         我们在使用矩阵对所渲染的视图做图形变换时(如平移,旋转,缩放),需要对矩阵进行点乘或叉乘计算,我们计算后的结果往往使用GLMatrixStack来存储,它具体是个什么东西呢?我们一起学习下.

           首先初始化一个矩阵堆栈

            GLMatrixStack::GLMatrixStack(int iStackDepth = 64)

             通过看他具体实现我们可以看到,它会创建一个栈结构的存储控件,iStackDepth表示该栈空间的深度为64,就是说我们可以对它进行64次的push操作,同时会在栈顶添加一个单元矩阵.

            在堆栈顶部载⼊一个单元矩阵    

            void GLMatrixStack::LoadIdentity(void) 在堆栈顶部创建一个 单位矩阵

            在堆栈顶部载入任何矩阵 //参数:4*4矩阵

          void GLMatrixStack::LoadMatrix(const M3DMatrix44f m);    

            矩阵乘以矩阵堆栈顶部矩阵,相乘结果存储到堆栈的顶部

            void GLMatrixStack::MultMatrix(const M3DMatrix44f);

            获取矩阵堆栈顶部的值 GetMatrix 函数 

              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);

    具体我们可以总结为下图

    相关文章

      网友评论

          本文标题:8. OpenGL中如何使用矩阵堆栈

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