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

glRotatef()在Opengl中工作起来很奇怪

glRotatef()是OpenGL中的一个函数,用于对当前矩阵进行旋转变换。它可以将物体绕指定的轴旋转一定的角度。

glRotatef()函数的原型如下: void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z);

参数说明:

  • angle:旋转角度,单位为度。
  • x、y、z:旋转轴的坐标。

glRotatef()函数的工作方式可能会让人感到奇怪的原因是,它是基于当前矩阵进行旋转变换的。在OpenGL中,有两个矩阵堆栈:模型视图矩阵堆栈和投影矩阵堆栈。glRotatef()函数会将旋转变换应用于当前的模型视图矩阵。

如果在调用glRotatef()之前没有进行任何矩阵操作,那么它将对默认的单位矩阵进行旋转变换。但是,如果在调用glRotatef()之前已经进行了其他矩阵操作,那么glRotatef()将对之前的矩阵进行旋转变换。

为了使glRotatef()函数按照预期工作,需要正确设置模型视图矩阵和投影矩阵,并在绘制物体之前将它们加载到OpenGL中。

glRotatef()函数的应用场景包括但不限于:

  • 3D模型的旋转
  • 相机的视角调整
  • 物体的姿态变换

腾讯云提供了一系列与云计算相关的产品,其中包括云服务器、云数据库、云存储等。这些产品可以帮助用户快速搭建和管理云计算环境。具体推荐的腾讯云产品和产品介绍链接如下:

  • 云服务器(CVM):提供弹性计算能力,支持多种操作系统和应用场景。产品介绍链接
  • 云数据库MySQL版:提供高性能、可扩展的关系型数据库服务。产品介绍链接
  • 云对象存储(COS):提供安全可靠的云端存储服务,适用于图片、音视频、文档等各种类型的数据存储。产品介绍链接

请注意,以上推荐的腾讯云产品仅供参考,具体选择应根据实际需求进行。

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

相关·内容

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

GL10作为三维空间的画笔,它所描绘的三维物体却要显示二维平面上,显而易见这不是一个简单的伙计。为了理顺物体从三维空间到二维平面的变换关系,有必要搞清楚OpenGL关于三维空间的几个基本概念。...好比日常生活的拍照,用户只管拿起手机咔嚓一下,根本不用关心摄像头怎么生成照片。...遥远的景物自然也是看不清楚的,所以也要规定一下,比如最远只能看到一公里之内的人影。这个能看清景物的最近距离和最远距离,就构成了镜头的视距。...OpenGL,这些镜头参数的调节依赖于GL10的gluPerspective方法,具体的参数调整代码举例如下: // 设置投影矩阵,对应gluPerspective(调整相机参数)...下面是OpenGL挪动相机位置的方法调用代码: // 选择模型观察矩阵,对应gluLookAt(人动)、glTranslatef/glScalef/glRotatef(物动)

1.2K20
  • 实验4 二维几何变换

    20分钟); (2) 使用glRotatef()函数,实现图形旋转,并结合glRotatef()函数的不同参数输入,实现x,y和z方向的旋转,将测试结果存为图4-6,与对应修改的旋转函数代码一起保存至word...word实验文档(20分钟); (4)示范代码2,代码运行结果为图2,请参考它绘制如图3所示的图形,将绘图结果与代码保存至word实验文档(30分钟); (5) 整理word实验文档,将其命名为“序号...3.实验原理: (1)OpenGL下的几何变换 OpenGL的核心库,每一种几何变换都有一个独立的函数,所有变换都在三维空间中定义。...(视口变换) 这些,都可以OpenGL实现。 从“相对移动”的观点来看,改变观察点的位置与方向和改变物体本身的位置与方向具有等效性。OpenGL,实现这两种功能甚至使用的是同样的函数。...OpenGL规定堆栈至少可以容纳32个矩阵,某些OpenGL实现,堆栈的容量实际上超过了32个。因此不必过于担心矩阵的容量问题。 通常,用这种先保存后恢复的措施,比先变换再逆变换要更方便、更快速。

    1.1K20

    实验6 OpenGL模型视图变换

    上述变换OpenGL实际上是通过矩阵乘法来实现。无论是移动、旋转还是缩放大小,都是通过在当前矩阵的基础上乘以一个新的矩阵来达到目的。OpenGL可以最底层直接操作变换矩阵。...下面是这些变换函数使用时需要注意内容:   (1)OpenGL程序,视图变换必须出现在模型变换之前,但可以绘图之前的任何时候执行投影变换和视口变换。   ...总结起来,OpenGL矩阵坐标之间的关系为:模型世界坐标→模型视图矩阵→投影矩阵→透视除法→规范化设备坐标→窗口坐标。   ...深度测试算法,通过扫描投影xOy平面上每一点的z坐标的大小,确定遮挡关系,只显示z坐标小的像素,进而完成遮挡效果。...OpenGL可设置多种光源,包括环境光、漫反射光、镜面反射光,构建光照模型,来模拟现实的光照。

    2K30

    VS 2010 OpenGL 配置与实例开发

    OpenGL不仅用于 Windows,还可以用于Unix/Linux等其它系统,它甚至大型计算机、各种专业计算机(如:医疗用显示设备)上都有应用。...OpenGL是一个工业标准,它的技术紧跟时代,现今各个显卡厂家无一不对OpenGL提供强力支持,激烈的竞争中使得OpenGL性能一直领先。 总之,OpenGL是一个NB的图形软件接口。...1.0f, 0.0f, 0.0f); glutSolidSphere(69600000, 20, 20); // 绘制蓝色的“地球” glColor3f(0.0f, 0.0f, 1.0f); glRotatef...项目属性,切换到“链接器”->系统,右侧窗口的子系统选择:窗口 (/SUBSYSTEM:WINDOWS) ? 6....项目属性,再切换到“链接器”->命令行,“其他选项”输入:/ENTRY:mainCRTStartup (可以去除程序运行时出现的dos窗口) ?

    99710

    这个点,面试答出来加分!

    sockfd=socket(AF_INET,SOCK_STREAM, 0)) 返回的sockfd是 socket 的句柄 id,用于整个操作系统唯一标识你的 socket 是哪个,可以理解为 socket...拷贝到发送缓冲区的相关操作     // 解锁     release_sock(sk); } tcp_sendmsg的目的就是将要发送的数据放入到 TCP 的发送缓冲区,此时并没有所谓的发送数据出去...聊完 TCP,我们自然就能想到另外一个传输层协议 UDP,那么它是线程安全的吗? 我们平时写代码的时候如果要使用 UDP 发送消息,一般会像下面这样操作。...TCP,线程安全不代表你可以并发地读写同一个socket_fd,因为哪怕内核态中加了lock_sock(sk),这个锁的粒度并不覆盖整个完整消息的多次分批发送,它只保证单次发送的线程安全,所以建议只用一个线程去读写一个...而基于数据报,可以类比为一件件快递进入传送管道一样,内核清楚拿到的是几件快递,快递和快递之间边界分明。

    44220

    OpenGL】二十、OpenGL 矩阵变换 ( 矩阵缩放变换 | 矩阵旋转变换 | 矩阵平移变换 )

    三角形绘制相关参考 【OpenGL】十三、OpenGL 绘制三角形 ( 绘制单个三角形 | 三角形绘制顺序 | 绘制多个三角形 ) 博客 ; 代码示例 : // 渲染场景 // 清除缓冲区...5.0f); // 绘制三角形结束 glEnd(); // 将后缓冲区绘制到前台 SwapBuffers(dc); 运行效果 : 二、选中矩阵设置 ---- ...【OpenGL】十、OpenGL 绘制点 ( 初始化 OpenGL 矩阵 | 设置投影矩阵 | 设置模型视图矩阵 | 绘制点 | 清除缓冲区 | 设置当前颜色值 | 设置点大小 | 绘制点 ) 博客简单介绍了...投影矩阵 和 模型视图矩阵 ; 进行 平移 , 缩放 , 旋转 等矩阵操作 , 主要针对 模型视图矩阵 进行操作 ; 进行 OpenGL 环境渲染时 , 选中了 GL_MODELVIEW 模型视图矩阵后..., 就开始了渲染 , 后面操作的矩阵都是针对该 GL_MODELVIEW 矩阵的 ; 下面的代码是设置矩阵的代码 , 之后就开始了 OpenGL 模型渲染 , 也就是说模型渲染过程 , 全程都选中了模型矩阵

    3.6K00

    生化小课 | β转角蛋白质常见

    医学生:生理生化 必有一挂 生科/生技:生化书是我见过最厚的教材 没有之一 每周一堂 生化小课 —— 期末/考研 逢考必过—— β转角蛋白质常见 具有紧凑折叠结构的球状蛋白,一些氨基酸残基多肽链反转方向处呈轮转或环状...甘氨酸和脯氨酸残基经常出现在β转角,前者是因为它小而灵活,后者是因为涉及脯氨酸亚氨基氮的肽键容易呈现顺式构型(图4-7),这种形式特别适合于紧密转弯。图4-6所示的两种β 转角是最常见的。...of Biochemistry 本栏目信息及图片均来源于Lehninger Principles of Biochemistry 第八版,其中文字信息为英文原版的小编翻译/整理版,仅供学习交流使用,欢迎留言区或私信听课君提供宝贵意见

    1.4K30

    实验3 OpenGL几何变换

    2.实验内容: (1)阅读实验原理,运行示范实验代码,掌握OpenGL程序平移、旋转、缩放变换的方法; (2)根据示范代码,尝试完成实验作业; 3.实验原理: (1)OpenGL下的几何变换 OpenGL...的核心库,每一种几何变换都有一个独立的函数,所有变换都在三维空间中定义。...即:实际变换的顺序与代码写的顺序是相反的。由于“先移动后旋转”和“先旋转后移动”得到的结果很可能不同,初学的时候需要特别注意这一点。...(视口变换) 这些,都可以OpenGL实现。 从“相对移动”的观点来看,改变观察点的位置与方向和改变物体本身的位置与方向具有等效性。OpenGL,实现这两种功能甚至使用的是同样的函数。...OpenGL规定堆栈的容量至少可以容纳32个矩阵,某些OpenGL实现,堆栈的容量实际上超过了32个。因此不必过于担心矩阵的容量问题。

    1.2K20

    实验5 OpenGL二维几何变换

    1.实验目的: 理解并掌握OpenGL二维平移、旋转、缩放变换的方法。 2.实验内容: (1)阅读实验原理,掌握OpenGL程序平移、旋转、缩放变换的方法。 (2)根据示范代码,完成实验作业。...3.实验原理: (1) OpenGL下的几何变换 OpenGL的核心库,每一种几何变换都有一个独立的函数,所有变换都在三维空间中定义。...即:实际变换的顺序与代码写的顺序是相反的。由于“先移动后旋转”和“先旋转后移动”得到的结果很可能不同,初学的时候需要特别注意这一点。...(视口变换) 这些,都可以OpenGL实现。 从“相对移动”的观点来看,改变观察点的位置与方向和改变物体本身的位置与方向具有等效性。OpenGL,实现这两种功能甚至使用的是同样的函数。...OpenGL规定堆栈至少可以容纳32个矩阵,某些OpenGL实现,堆栈的容量实际上超过了32个。因此不必过于担心矩阵的容量问题。 通常,用这种先保存后恢复的措施,比先变换再逆变换要更方便、更快速。

    2.4K10

    OpenGL基本框架与三维对象绘制

    (rtri,0.0f,1.0f,0.0f); //以下绘制的对象沿X 轴转动10 度 //glRotatef(10, 1, 0, 0); //查看当前的4X4 矩阵变量...Mat44 mat; //取得模型-视图变换矩阵 glGetFloatv(GL_MODELVIEW_MATRIX, mat); //DOS 控制台查看上述变换后的总变换矩阵结果...-0.2, 0); glVertex3f(0.8, -0.2, 0.3); glVertex3f(0, 0.2, -0.5); glEnd(); //绘制实心的圆环——原有变换基础上..., 0.0f, 0.5); glutSolidTorus(0.3, 0.7, 30.0f, 30.0f);//绘制实心圆环 } glPopMatrix(); //从堆栈恢复已压栈的变换矩阵...//用缓冲区所绘制的对象替换窗口内容——适合于双缓冲技术 glutSwapBuffers();//交换双缓存 } //用户自定义窗口调整大小事件的处理函数 //在这个函数要求设置视口

    73420

    OpenGL的glPushMatrix()和glPopMatrix()矩阵栈顶操作函数详解「建议收藏」

    OpenGL图形绘制后,往往需要一系列的变换来达到用户的目的,而这种变换实现的原理是又通过矩阵进行操作的。...opengl的变换一般包括视图变换、模型变换、投影变换等,每次变换后,opengl将会呈现一种新的状态(这也就是我们为什么会成其为状态机)。...有时候经过一些变换后我们想回到原来的状态,就像我们谈恋爱一样,换来换去还是感觉初恋好,怎么办?...所以我们变换之前调用giPushMatrix()的话,就会把当前状态压入第二层,不过此时栈顶的矩阵也与第二层的相同。...opengl场景中一般存在多种矩阵变换操作,而控制这些操作的命令主要用到 glMatrixMode(GLenum mode); 作用:用于指定用哪个矩阵作为当前矩阵

    1.4K30

    OpenGL】二十一、OpenGL 矩阵压栈与出栈 ( 不同类型矩阵变换先后顺序 | 渲染前不设置单位阵 | 压栈出栈原理分析 | 代码示例 )

    文章目录 一、不同类型矩阵变换先后顺序 二、渲染前不设置单位阵 三、矩阵的压栈和出栈原理分析 四、矩阵的压栈和出栈代码示例 五、相关资源 一、不同类型矩阵变换先后顺序 ---- 对 OpenGL 的.../ 矩阵缩放 // 缩放的是下面设置的点的坐标 // 每个参数都影响 x , y , z 分量 //glScalef(2.0f, 2.0f, 1.0f); // 矩阵旋转 // glRotatef...glPushMatrix(); 矩阵出栈 : // 矩阵出栈 glPopMatrix(); 三、矩阵的压栈和出栈原理分析 ---- 这里引入两个重要的操作 : 矩阵的 压栈 和 出栈 , 这是 OpenGL...固定管线的重要操作 ; 显卡栈 : 矩阵显卡中有一个栈 , 该显卡的栈可以存储 n 个矩阵 ; 栈顶矩阵 : 栈顶的矩阵是 模型视图 ( ModelView ) 矩阵 , 该矩阵的值是 单位阵...// 将后缓冲区绘制到前台 SwapBuffers(dc); } 最终效果 : 五、相关资源 GitHub 地址 : https://github.com/han1202012/OpenGL

    1.9K00

    OpenGL光照设置

    OpenGL,环境光也被作为一种特殊的光源的成分来看待。 漫射光是指在光源能够被漫反射的光的颜色成分(白色则包含所有颜色), 而平行光是指光源中所有能够被镜面反射的光的颜色成分。...2.光照模型 OpenGL的光照模型是用来模拟现实生活的光照的。 3.材质设定 (1)材质颜色 OpenGL用材料对光的红、绿、蓝三原色的反射率来近似定义材料的颜色。...进行光照计算时,材料对环境光的反射率与每个进入光源的环境光结合,对漫反射光的反射率与每个进入光源的漫反射光结合,对镜面光的反射率与每个进入光源的镜面反射光结合。...对环境光与漫反射光的反射程度决定了材料的颜色,并且它们相似。对镜面反射光的反射率通常是白色或灰色(即对镜面反射光红、绿、蓝的反射率相同)。镜面反射高光最亮的地方将变成具有光源镜面光强度的颜色。...也就是说,若OpenGL的光源颜色为(LR,LG,LB),材质颜色为(MR,MG,MB),那么,忽略所有其他反射效果的情况下,最终到达眼睛的光的颜色为(LR*MR,LG*MG,LB*MB)。

    1.1K30
    领券