概述

glMatrixMode() 用以指定当前要操作的矩阵,可选值有 GL_MODELVIEW(模型视图,默认值),GL_PROJECTION(投影),GL_TEXTURE(纹理),GL_COLOR(颜色)

当我们使用 glMatrixMode(GL_MODELVIEW) 时,即表示我们接下来要对模型视图矩阵堆栈进行一些操作(Applies subsequent matrix operations to the modelview matrix stack),例如位移,旋转,缩放,亦或是是要添加一个新的图形。

当我们使用 glMatrixMode(GL_PROJECTION) 时,即表示我们

例子

对模型视图矩阵操作的例子

glMatrixMode(GL_MODELVIEW);
glLoadIdentity(); // 将当前所选中的模型视图矩阵置为单位矩阵,即抛弃之前的更改
glTranslatef(ballX, ballY, 0.0f); // 对此矩阵应用位移操作
glBegin(GL_TRIANGLE_FAN); // 开始绘制三角形扇形序列
glColor3f(1.0f, 0.0f, 0.0f);
glVertex2f(0.0f, 0.0f);
int numSegments = 100;
GLfloat angle;
for (int i = 0; i <= numSegments; i++)
{
angle = i * 2.0f * PI / numSegments;
glVertex2f(cos(angle) * ballRadius, sin(angle) * ballRadius); // 指定顶点
}
glEnd(); // 绘制结束

对投影矩阵操作的例子

glMatrixMode(GL_PROJECTION);
glLoadIdentity(); // 抛弃之前的更改
gluOrtho2D(clipAreaXLeft, clipAreaXRight, clipAreaYBottom, clipAreaYTop); // 设置二维正交视图区域

参考

  1. https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glMatrixMode.xml
  2. https://stackoverflow.com/questions/4566558/why-is-there-a-glmatrixmode-in-opengl
  3. https://blog.csdn.net/jiangdf/article/details/8460012

本文亦发布在:https://iamazing.cn/article/OpenGL-glMatrixMode()-函数解释与例子

OpenGL glMatrixMode() 函数解释与例子的更多相关文章

  1. openGL初学函数解释汇总

    openGL初学函数解释汇总 1.GLUT工具包提供的函数 //GLUT工具包所提供的函数 glutInit(&argc, argv);//对GLUT进行初始化,这个函数必须在其它的GLUT使 ...

  2. OpenGl的glMatrixMode()函数理解

    glMatrixMode()函数的参数,这个函数其实就是对接下来要做什么进行一下声明,也就是在要做下一步之前告诉计算机我要对“什么”进行操作了,这个“什么”在glMatrixMode的“()”里的选项 ...

  3. OpenGl学习glMatrixMode()函数理解

    glMatrixMode()函数的参数,这个函数其实就是对接下来要做什么进行一下声明,也就是在要做下一步之前告诉计算机我要对“什么”进行操作了,这个“什么”在glMatrixMode的“()”里的选项 ...

  4. 【计算机图形学】openGL常用函数

    OpenGL常用函数   glAccum 操作累加缓冲区   glAddSwapHintRectWIN 定义一组被 SwapBuffers拷贝的三角形   glAlphaFunc允许设置alpha检测 ...

  5. opengl常用函数

    glAccum 操作累加缓冲区   glAddSwapHintRectWIN 定义一组被 SwapBuffers拷贝的三角形   glAlphaFunc允许设置alpha检测功能   glAreTex ...

  6. 【OpenGL游戏开发之三】OpenGl核心函数库汇总

    OpenGl核心函数库 glAccum 操作累加缓冲区 glAddSwapHintRectWIN 定义一组被SwapBuffers拷贝的三角形 glAlphaFunc允许设置alpha检测功能 glA ...

  7. PHP关于依赖注入(控制反转)的解释和例子说明

    PHP关于依赖注入(控制反转)的解释和例子说明 发表于2年前(2014-03-20 10:12)   阅读(726) | 评论(1) 8人收藏此文章, 我要收藏 赞2 阿里云双11绽放在即 1111 ...

  8. 关于js函数解释(包括内嵌,对象等)

    常用写法: function add(a,b) { return a + b; } alert(add(1,2)); // 结果 3 当我们这么定义函数的时候,函数内容会被编译(但不会立即执行,除非我 ...

  9. php函数描述及例子

    /** * xml2array() will convert the given XML text to an array in the XML structure. * Link: http://w ...

随机推荐

  1. Android 让你的 Room 搭上 RxJava 的顺风车 从重复的代码中解脱出来

    # 什么是 Room ? 谷歌为了帮助开发者解决 Android 架构设计问题,在 Google I/O 2017 发布一套帮助开发者解决 Android 架构设计的方案:Android Archit ...

  2. JavaScript之对象Array

    数组Array是JavaScript中最常用的类型之一,同一数组中可以保存任意类型的数据,并且它的长度是动态的,会随着数组中数据的加减自动变化.每个数组都有一个表示其长度(数组元素的个数)的lengt ...

  3. Apache和Tomcat 配置负载均衡(mod-proxy方式)-粘性session

    Tomcat集群配置后端Tomcat Server为支持AJP的独立服务,前端Apache配置为粘性会话(sticky-session),Tomcat不配置Cluster配置和Session复制. 配 ...

  4. 序列标注(HMM/CRF)

    目录 简介 隐马尔可夫模型(HMM) 条件随机场(CRF) 马尔可夫随机场 条件随机场 条件随机场的特征函数 CRF与HMM的对比 维特比算法(Viterbi) 简介 序列标注(Sequence Ta ...

  5. 你竟然不装油猴插件-Chrome神器TamperMonkey

    油猴插件是一款可以在chrome浏览器中使用油猴脚本的插件.理解为脚本运行的平台 脚本 是一段代码,安装之后,有些脚本能为网站添加新的功能,有些能使网站的界面更加易用,有些则能隐藏网站上烦人的部分内容 ...

  6. 关于Python json解析过程遇到的TypeError: expected string or buffer

    关于Python json解析过程遇到的问题:(爬取天气json数据所遇到的问题http://tianqi.2345.com/) part.1 url——http://tianqi.2345.com/ ...

  7. 《构建之法》MSF&需求分析

    第七章 MSF MSF基本原则 推动信息共享与沟通 为共同的远景而工作 充分授权和信任 各司其职,对项目共同负责 交付增量的价值 保持敏捷,预期和适应变化 投资质量 学习所有的经验 与顾客合作 MSF ...

  8. Linux修改屏幕分辨率至2K

    使用命令:cvt,与 xrandr 使用cvt命令查看分辨率配置: Modeline后边分别是 modeName 以及 详细的配置 linklee@linklee-270E5G-270E5U:~$ c ...

  9. MongoDB系列(一):初步理解

    一.简介 MongoDB是一款强大.灵活.且易于扩展的通用型数据库 1.易用性 1)MongoDB是一款面向文档的数据库,而不是关系型数据库,因此而有着更好的扩展性. 2)通过在文档中嵌入文档和数组, ...

  10. idea中添加Run Dashboard

    可以在工程目录下找到.idea文件夹下的workspace.xml,在其中加入以下代码即可: <component name="RunDashboard"> <o ...