概述

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. 腾讯、阿里、百度、360、114 公共DNS分享

    DNS,在互联网有着重要的地位,域名转换成IP,都是DNS在工作. 腾讯 DNS+ IP:119.29.29.29 备用:182.254.116.116 阿里DNS ip:223.5.5.5 223. ...

  2. C++基础之泛型算法

    标准库并未给每个容器添加大量功能,因此,通过大量泛型算法,来弥补.这些算法大多数独立于任何特定的容器,且是通用的,可用于不同类型的容器和不同的元素. 迭代器使得算法不依赖容器,但是算法依赖于元素的类型 ...

  3. (intellij ieda激活码、CLion激活码、php storm激活码、webstorm激活码、jetbrains全家桶激活码)

    中华民族传统美德 下载地址 https://www.jetbrains.com/zh/phpstorm/promo/?utm_source=baidu&utm_medium=cpc&u ...

  4. 使用Git工具批量拉取代码

    公司项目比较多,每天上班第一件事就是拉取代码,cd A 目录 git pull cd .. cd B ...... 一个项目一个项目的拉取,感觉也是很费劲的,那么有没有什么一键操作呢 现在执行一个命令 ...

  5. SPSS学习笔记参数检验—两独立样本t检验

    目的:利用来自两个总体的独立样本,推断两个总体的均值是否存在差异. 适用条件: (1)样本来自的总体应服从或近似服从正态分布: (2)两样本相互独立,两样本的样本量可以不等: 案例分析: 案例描述:评 ...

  6. 玩转 SpringBoot 2 之整合 JWT 下篇

    前言 在<玩转 SpringBoot 2 之整合 JWT 上篇> 中介绍了关于 JWT 相关概念和JWT 基本使用的操作方式.本文为 SpringBoot 整合 JWT 的下篇,通过解决 ...

  7. Kubernetes 系列(四):使用Traefik访问.net core api

    一. 准备 本篇的要求是在前三篇的基础上已经搭建好的本地k8s以及部署了Traefik,我们将会使用Traefik Ingress来访问.net core api,比较简单,做个记录,如果还没有搭建k ...

  8. 如何增强VR的vection/self-motion?

    上一节讲到了vection是给玩家带来“移动感”的因素,它提供良好VR体验的关键之一.那么VR中我们一般用哪些方式来提供vection呢?1 首先来简单了解一下人体和空间相关的感知机制. 视觉线索 v ...

  9. Python Excel操作——xlrd、xlwd

    读取 1.导入模块 import xlrd 2.打开Excel文件读取数据 data = xlrd.open_workbook('excel.xls') 3.获取一个工作表 1 table = dat ...

  10. MongoDB 学习笔记之 索引选项和重建索引

    索引选项: {background:true}在后台创建索引,索引在构建过程中,其他客户端仍然可以查询数据,不会阻塞. db.comments.createIndex({anonymous: 1},{ ...