概述

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. Salesforce学习之路-developer篇(一)利用VS Code结合Git开发Salesforce

    Part 1: 从Git中克隆代码到本地 git clone https://github.com/git/git Part 2: 在VS Code中安装Salesforce和Git插件 在VS Co ...

  2. Vue学习之vue属性绑定和双向数据绑定

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. [Spark] 05 - Spark SQL

    关于Spark SQL,首先会想到一个问题:Apache Hive vs Apache Spark SQL – 13 Amazing Differences Hive has been known t ...

  4. kafka删除弃用的groupid

    登录zookeeper客户端 cd zookeeper-3.4.10 sh zkCli.sh 查看groupid信息 [zk:localhost:2181(CONNECTED) 1] ls /cons ...

  5. webdriver断言

    操作(action).辅助(accessors)和断言(assertion): 操作action: 模拟用户与 Web 应用程序的交互.一般用于操作应用程序的状态. 如点击链接,选择选项的方式进行工作 ...

  6. Python学习笔记整理总结【Django】:Model操作(一)

    Model操作(一) 一.Django ORM基本配置 ORM:关系对象映射(Object Relational Mapping,简称ORM)db Frist:到目前为止,当我们的程序涉及到数据库相关 ...

  7. Spring MVC 梳理 - 四种HandlerMapping

    总结 (1)SpringMVC导入jar包,配置web.xml 这些都是基础的操作. (2)四种HandlerMapping:DefaultAnnotationHandlerMapping;Simpl ...

  8. 难题解决:Mycat数据库中间件+Mybatis批量插入数据并返回行记录的所有主键ID

     一.mybatis的版本必须为3.3.1及其以上 项目所依赖的mybatis的版本必须为3.3.1及其以上,低版本的不行,保证hap项目的依赖的mybatis的jar的版本必需为需要的版本: 二.在 ...

  9. 【ADO.NET基础-Session】Session的基本应用

    在服务端存储状态的对象:Session和Application 在客户端存储状态的对象:Cookie 1.Session:每个独立的浏览器都会创建一个独立的Session,不是一台电脑一个Sessio ...

  10. Idea插件之IdeTalk

    前言 随着越来越多的公司与Java工程师,逐步从Eclipse过度到Idea,安装相应的插件可能会成倍的增加工作效率. IDETalk是由JetBrains的工程师开发的一款代码级的协同工具,主要是为 ...