zoukankan      html  css  js  c++  java
  • OpenGl学习笔记4之通用的视图变换函数(glLoadIdentity,glMatrixMode)

    通用的变换函数

    在介绍四种变换的具体使用方法时,先简单介绍下场景变换中用到的通用函数。

    函数原型:

    Void glLoadIdentity (void)

    作用:把当前矩阵设置为单位矩阵,这个函数在每次场景变换之前都很重要,因为绝大多数变换都是把当前矩阵与我们指定的矩阵相乘,然后把结果再设置为当前矩阵(前面已经介绍过:我们的变换实质就是一个4*4的矩阵,不同的变换有不同的参数,我们只需要调用opengl的函数即可,不用直接操纵矩阵)。所以我们在变换之前,把当前矩阵清空成单位矩阵,否则当前矩阵中的参数是上一次变换留下来的(当前矩阵会一致保存上一次变换时的状态,这是由于opengl特有的状态机制导致的),说了这么多,大家就记住每次变换之前先调用这个函数,这是一个良好的习惯。

     


    函数原型:

    void glMatrixMode(GLenum mode)

    作用:mode 指定哪一个矩阵堆栈是下一个矩阵操作的目标,可选值: GL_MODELVIEW、GL_PROJECTION、GL_TEXTURE.

    glMatrixMode设置当前矩阵模式:

    GL_MODELVIEW,对模型视景矩阵堆栈应用随后的矩阵操作.

    GL_PROJECTION,对投影矩阵应用随后的矩阵操作.

    GL_TEXTURE,对纹理矩阵堆栈应用随后的矩阵操作.

    说白了,就是我们在进行变换之前,要显式的告诉opengl,我们接下来要进行哪种变换(修改哪种矩阵)。不同的参数对应我们不同的变换。在默认情况下,该函数修改的矩阵式模型视图矩阵,并且默认情况下,这三个矩阵均为单位矩阵。


    此函数与glLoadIdentity()一同使用,这两个函数一般情况下就是捆绑使用:进行变换时,先说明要对哪种矩阵操作。再清空矩阵。

    void init (void) //绘制之前进行初始化一系列动作
    {
       glClearColor (0.0, 0.0, 0.0, 0.0);   //将屏幕颜色清除为白色
    
       glMatrixMode(GL_PROJECTION);  //设置操作矩阵为投影矩阵,投影矩阵以后会详细介绍
       glLoadIdentity();//将矩阵清空为单位矩阵
       glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0); //定义正交平行的视景体。 一般用于物体不会因为离屏幕的远近而产生大小的变换的情况。此函数以为会详细的讲。
    }
    


  • 相关阅读:
    RAC一个节点自动重启问题分析
    Oracle Audit 审计总结
    oracle 11g日志审计
    在线剪辑歌曲
    转载:MySQL Cluster NDB(Mysql 集群)
    U 盘多系统安装盘制作神器YUMI
    转载:网站限制IP地址访问-精确到国家/省/市IP地址
    开源企业云盘Seafile部署
    K8S(二)-创建一个pod应用
    mariadb升级
  • 原文地址:https://www.cnblogs.com/zhangruilin/p/5769809.html
Copyright © 2011-2022 走看看