首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

glLoadIdentity()在OpenGL中做什么?

在OpenGL中,glLoadIdentity()函数是用于将当前矩阵重置为单位矩阵。在OpenGL中,矩阵是用于处理几何变换的,例如平移、旋转和缩放等。当使用glLoadIdentity()函数时,所有的变换都会被重置,并且OpenGL会从单位矩阵开始进行变换。

glLoadIdentity()函数的主要作用是将当前矩阵重置为单位矩阵,这样可以确保后续的变换操作是在一个干净的状态下进行的。这个函数通常与glPushMatrix()和glPopMatrix()函数一起使用,用于保存和恢复矩阵状态。

在实际的编程中,glLoadIdentity()函数可以用于确保每一帧的渲染都是从一个统一的状态开始的,这样可以避免不同帧之间的相互影响。同时,glLoadIdentity()函数也可以用于处理复杂的几何变换,例如多个矩阵的组合等。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

OpenGL(五)-- OpenGL矩阵的变换OpenGL(五)-- OpenGL矩阵的变换

OpenGL(五)-- OpenGL矩阵的变换 前言 照常提出几个问题,希望通过阅读可以找到答案。 对物体3维的2维投影进行位移,有几种方式? 模型视图矩阵代表了什么?...世界坐标系 WORLD SPACE称为世界坐标系,记录物体坐标系的位置; 世界坐标系是由原点经过模型矩阵(Model Matrix)通过矩阵相乘变换得来的。 3....涉及到的矩阵变换 OpenGL矩阵的计算方式 // 矩阵计算 m3dMatrixMultiply44(ModelViewMatrix(模型视图矩阵),ViewMatrix(观察者矩阵), ModelMatrix...如果想要了解具体矩阵是如何计算的:3D数学 矩阵知识 矩阵栈 计算时会发现这种计算会导致物体唯一无法重置,为了解决这种问题OpenGL提出了矩阵栈的概念。栈这个概念应该是很熟悉了吧!...后序 将开始提出的2个问题做一个简单回答: 物体3维空间位移,除了物体本身移动,还可以移动观察者。

2.3K10

OpenGLOpenGL移动端的应用

OpenGL移动端的表现形式为OpenGLES,OpenGL ES (OpenGL for Embedded Systems) 是 OpenGL三维图形 API 的子集,针对手机、PDA和游戏主机等嵌入式设备而设计...二.坐标系统 开始绘制图形之前,我们必须先给OpenGL输入一些顶点数据。OpenGL是一个3D图形库,所以我们OpenGL中指定的所有坐标都是3D坐标(x、y和z)。...OpenGL不是简单地把所有的3D坐标变换为屏幕上的2D像素;OpenGL仅当3D坐标3个轴(x、y和z)上都为-1.0到1.0的范围内时才处理它。...接着对装配好的图元进行裁剪(clip):保留完全视锥体的图元,丢弃完全不在视锥体的图元,对一半一半不在的图元进行裁剪;接着再对视锥体的图元进行剔除处理(cull):这个过程可编码来决定是剔除正面...iOS12之后,OpenGL ES的api被废弃了,苹果还是主推他们自己研发的metal,对于OpenGL ES和metal,事实上很多api都非常相似,再学习成本不会很大。 ?

2.7K30
  • 实验2 直线生成算法实现

    2.实验内容: (1) 根据所给的直线光栅化的示范源程序,计算机上编译运行,输出正确结果; (2) 指出示范程序采用的算法,以此为基础将其改造为中点线算法或Bresenham算法,写入实验报告; (3...3.实验原理: 示范代码原理参见教材直线光栅化一节的DDA算法。下面介绍下OpenGL画线的一些基础知识和glutReshapeFunc()函数。...前面的实验已经知道如何绘“点”,那么OpenGL是如何知道拿这些顶点来做什么呢?是一个一个的画出来,还是连成线?或者构成一个多边形?或是做其它事情呢?...void Reshape(int w, int h) { glViewport(0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode(GL_PROJECTION); glLoadIdentity...(); gluOrtho2D(0.0, (GLdouble) w, 0.0, (GLdouble) h); } GLUT内部,将给该函数传递两个参数:窗口被移动或修改大小后的宽度和高度,单位为像素。

    98820

    机械版CG 实验2 直线生成算法的实现

    2.实验内容: (1) 根据所给的直线光栅化的示范源程序,计算机上编译运行,输出正确结果; (2) 指出示范程序采用的算法,以此为基础将其改造为中点线算法或Bresenham算法,写入实验报告; (...3.实验原理: 示范代码原理参见教材直线光栅化一节的DDA算法。下面介绍下OpenGL画线的一些基础知识和glutReshapeFunc()函数。...前面的实验已经知道如何绘“点”,那么OpenGL是如何知道拿这些顶点来做什么呢?是一个一个的画出来,还是连成线?或者构成一个多边形?或是做其它事情呢?...Reshape(int w, int h) { glViewport(0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode(GL_PROJECTION); glLoadIdentity...(); gluOrtho2D(0.0, (GLdouble) w, 0.0, (GLdouble) h); } GLUT内部,将给该函数传递两个参数:窗口被移动或修改大小后的宽度和高度,单位为像素。

    70920

    Qt创建一个OpenGL窗口

    我的目的是Qt开发过程,如果需要用到OpenGL相关的三维模型开发,可以快速上手,所以我选择的是用Qt比较新的版本自己做一遍。至于内部图形学 原理,则是边写程序边学习,所以本教程比较适合初学者。...我们本节的程序其实没有真正使用深度缓存,但几乎所有屏幕上显示3D场景OpenGL程序都使用深度缓存。它的排序决定那个物体先画。这样您就不会将一个圆形后面的正方形画到圆形上来。...以后的每个教程我都会在例程的此处增加新的代码。如果您对OpenGL已经有所了解的话,您可以 glLoadIdentity()调用之后,函数返回之前,试着添加一些OpenGL代码来创建基本的形。...模型观察矩阵存放了我们的物体讯息。最后我们重置模型观察矩阵。如果您还不能理解这些术语的含义,请别着急。以后的教程里,我会向大家解释。只要知道如果您想获得一个精彩的透视场景的话,必须这么做。...甚至您无法改变窗口的大小时(例如您在全屏模式下),它至少仍将运行一次——程序开始时设置我们的透视图。OpenGL场景的尺寸将被设置成它显示时所在窗口的大小。

    2.3K20

    洪灾、山火、暴雪,VRAR我们能为环保做什么

    纪录片《最后一次攀登》(The Last Ascent),Will Gadd和他的团队探索了周围的冰柱,又一次攀登了乞力马扎罗山峰。这次,他攀的是梅斯纳尔路线,这条路线自80年代以来仅攀登过一次。...攀登过程,Gadd明显感觉到了与之前攀登时的区别,由于冰川融化,大量冰块流失,他已不能继续攀登。 AR的气候变化,或许比现实更有效 ?...视频的AR互动,给你更多反思 《最后一次攀登》是全球首个可以AR同步的视频体验,其AR技术由计算机视觉公司Eye candylab开发,影片中增加了互动和沉浸式体验来增强主旨的感染力。 ?...点开动画后,动画效果会充满整个屏幕,并列举出冰雪融化的数量,还会有小鱼周围游来游去。 ?...如今的生活随处可见保护环境的宣传标语,校园里也有关于保护环境的专业部门,但是,这似乎已经变成了一种形式,就像我们整天说要保护环境,减少污染,事实却是车辆购买率持续升高,环境污染日渐严重。 ?

    68310

    实验2 基本图元光栅化

    ) 阅读学习所给的直线光栅化的DDA算法示范代码,将其彻底弄懂,根据实验思考题找出其中的错误;同时能在计算机上编译运行,输出正确结果,指出错误并截图保存为图1至word实验文档(30分钟); (2) 示范程序的基础上...3.实验原理: 示范代码原理参见教材直线光栅化一节的DDA算法。下面介绍下OpenGL画线的一些基础知识和glutReshapeFunc()函数。...(1)数学上的直线没有宽度,但OpenGL的直线则是有宽度的。同时,OpenGL的直线必须是有限长度,而不是像数学概念那样是无限的。...前面的实验已经知道如何绘“点”,那么OpenGL是如何知道拿这些顶点来做什么呢?是一个一个的画出来,还是连成线?或者构成一个多边形?或是做其它事情呢?...(); gluOrtho2D(0.0, (GLdouble) w, 0.0, (GLdouble) h); } GLUT内部,将给该函数传递两个参数:窗口被移动或修改大小后的宽度和高度,单位为像素

    1.1K20

    实验3 OpenGL几何变换

    2.实验内容: (1)阅读实验原理,运行示范实验代码,掌握OpenGL程序平移、旋转、缩放变换的方法; (2)根据示范代码,尝试完成实验作业; 3.实验原理: (1)OpenGL下的几何变换 OpenGL...的核心库,每一种几何变换都有一个独立的函数,所有变换都在三维空间中定义。...(视口变换) 这些,都可以OpenGL实现。 从“相对移动”的观点来看,改变观察点的位置与方向和改变物体本身的位置与方向具有等效性。OpenGL,实现这两种功能甚至使用的是同样的函数。...把当前矩阵设置为单位矩阵的函数为: glLoadIdentity(); 我们进行矩阵操作时,有可能需要先保存某个矩阵,过一段时间再恢复它。...OpenGL规定堆栈的容量至少可以容纳32个矩阵,某些OpenGL实现,堆栈的容量实际上超过了32个。因此不必过于担心矩阵的容量问题。

    1.2K20

    实验5 OpenGL模型视图变换

    (视口变换) 这些,都可以OpenGL实现。 从“相对移动”的观点来看,改变观察点的位置与方向和改变物体本身的位置与方向具有等效性。OpenGL,实现这两种功能甚至使用的是同样的函数。...OpenGL规定堆栈的容量至少可以容纳32个矩阵,某些OpenGL实现,堆栈的容量实际上超过了32个。因此不必过于担心矩阵的容量问题。...1.display()程序绘图函数潜在的重复性强调了:指定的视图变换之前,应该使用glLoadIdentity()函数把当前矩阵设置为单位矩阵。...OpenGL矩阵坐标之间的关系 物理坐标*模型视图矩阵*投影矩阵*透视除法*规范化设备坐标——〉窗口坐标 ?...除了考虑视野之外,投影变换确定物体如何投影到屏幕上,OpenGL提供了两种基本类型的投影,1、透视投影:远大近小;2、正投影:不影响相对大小,一般用于建筑和CAD应用程序 (4)视口变换 视口变换指定一个图象屏幕上所占的区域

    1.6K30

    小菜学Chromium之OpenGL学习之二

    CodeBlock里创建一个新的GLUT Win32程序(不是console控制台程序)后,我们还需要链接OpenGL库文件。 代码的前4行包括了我们使用的每个库文件的头文件。...本节的例程将创建一个空的OpenGL窗口,因此我们暂时还无需设置大堆的变量。余下需要设置的变量不多,但十分重要。几乎所写的每一个OpenGL程序中都会用到它们。...();// 重置模型观察矩阵} 接下的代码段,我们将对OpenGL进行所有的设置。...done) { 我们要做的第一件事是检查是否有消息等待。使用PeekMessage()可以不锁住我们的程序的前提下对消息进行检查。许多程序使用GetMessage(),也可以很好的工作。...但使用GetMessage(),程序收到paint消息或其他别的什么窗口消息之前不会做任何事。 //有消息等待吗?

    1K60

    OpenGL (二)--OpenGL那些晦涩难懂的名词、动词解析OpenGL (二)--OpenGL那些晦涩难懂的名词、动词解析

    图元 首先需要明确一个概念图元,OpenGl图元包含:点、线、三角形。也就是说我们看到的任何图形都是由这三个基本元素组成的。...将顶点数据保存到内存,就称为顶点数组。 将顶点数据保存到GPU的显存,就称为顶点缓存区 ? 管线 从图片到显示屏幕上需要一个过程。...这就是OpenGL中一个完成的管线流程。 最后一步测试与混合,实际进行了以下几步的操作。 ? 固定管线 OpenGL的早期,提供了很多API来帮助开发者快速完成渲染流程。...OpenGL已经提供了一些固定的混合算法,但是平时开发也会使用自定义片元着色器来完成,但是效率会比固定混合算法差一些。...变换矩阵 OpenGL想要图形发生平移、缩放、旋转就需要变换矩阵进行计算。 投影矩阵 OpenGL想要3D坐标转换为2D坐标,就需要投影矩阵进行计算。

    1.1K20

    实验5 立方体显示与变换

    word实验文档(20分钟); (2) 参考教材代码7.3.5,将代码的立方体改为四棱锥,将测试结果存为图3,与对应修改的代码一起保存至word实验文档(20分钟); 示范代码2基础上,按以下要求修改...: (3) 学习OpenGL观察变换函数gluLookAt的设置与使用方法,并在代码修改参数产生两点透视和三点透视,将两种透视图结果存为图4-5,与对应修改的代码一起保存至word实验文档(20分钟...3.实验原理: OpenGL程序,观察变换必须出现在模型变换之前,但可以绘图之前的任何时候执行投影变换和视口变换。...(1)在给定的观察变换之前,应该使用glLoadIdentity函数把当前矩阵设置为单位矩阵。 (2)载入单位矩阵之后,使用gluLookAt函数指定观察变换。...总结起来,OpenGL矩阵坐标之间的关系为:物体世界坐标→观察坐标→投影坐标→透视除法→规范化设备坐标→窗口坐标。

    1.1K40

    Android开发笔记(一百五十四)OpenGL的画笔工具GL10

    GL10作为三维空间的画笔,它所描绘的三维物体却要显示二维平面上,显而易见这不是一个简单的伙计。为了理顺物体从三维空间到二维平面的变换关系,有必要搞清楚OpenGL关于三维空间的几个基本概念。...下面就概括介绍一下GL10编码的三类常见方法: 一、颜色的取值范围 Android的三原色,不管是红色还是绿色还是蓝色,取值范围都是0到255,对应的十六进制数值则为00到FF,颜色数值越小表示亮度越弱...如下图的三维坐标系所示,三维空间有个M点,该点在x轴上的投影为P点,y轴上的投影为Q点,z轴上的投影为R点,因此M点的坐标位置就是(P, Q, R)。 ?...好比日常生活的拍照,用户只管拿起手机咔嚓一下,根本不用关心摄像头怎么生成照片。...OpenGL,这些镜头参数的调节依赖于GL10的gluPerspective方法,具体的参数调整代码举例如下: // 设置投影矩阵,对应gluPerspective(调整相机参数)

    1.2K20

    OpenGL ES——一个平平无奇的三角形

    OpenGL ES作为移动端上的图像渲染框架,将变得越来越重要。在此将学习OpenGL ES作为Q3的主要目标。10月1日前,希望能有阶段性成果。...因为onSurfaceCreated的时候我们是不知道纸的宽高的,所以有一些和长宽相关的初始化工作还得在此函数来做。...gl.glViewport(0, 0, width, height); 设置投影矩阵 渲染,我们只绘制可见的东西。...虽然OpenGL,我们画的是3D物体,但手机屏幕毕竟是一个平面。我们在生活,看见的也只是一个平面。那么,一个3D物体,我们看到的应该是什么样的,取决于我们的投影矩阵如何设置。...图形和色彩数据 OpenGL并不是对堆里面的数据进行操作,而是直接内存(Direct Memory),即操作的数据需要保存到NIO里面的Buffer对象

    81660
    领券