参考文章:百度百科

OpenGL函数思考-glLoadIdentity

  OpenGL为我们提供了一个非常简单的恢复初始坐标系的手段,那就是调用glLoadIdentity()命令。该命令是一个无参的无值函数,其功能是用一个4×4的单位矩阵来替换当前矩阵,实际上就是对当前矩阵进行初始化。也就是说,无论以前进行了多少次矩阵变换,在该命令执行后,当前矩阵均恢复成一个单位矩阵,即相当于没有进行任何矩阵变换状态。

  当您调用glLoadIdentity()之后,您实际上将当前点移到了屏幕中心:类似于一个复位操作
      1.X坐标轴从左至右,Y坐标轴从下至上,Z坐标轴从里至外。
      2.OpenGL屏幕中心的坐标值是X和Y轴上的0.0f点。
      3.中心左面的坐标值是负值,右面是正值。移向屏幕顶端是正值,移向屏幕底端是负值。移入屏幕深处是负值,移出屏幕则是正值。

本质概念理解

1).加载glLoadIdentity(),等于是将之前矩阵变换导致变化过的栈顶矩阵重新归位,置为单位矩阵!等于是之前的矩阵变换带来的影响到此为止了!
2).产生顶点的语句,比如glutWireBox、glutSolidSphere等等,它们最终要与栈顶矩阵计算算出最终的顶点位置。但它们本身不会影响栈顶矩阵的值!
3).任何一个模型、视图变换,如translate、scale、lookAt等,计算后都会影响当前栈顶矩阵的值!若每次变换完毕后不去归位(glLoadIdentity),则下一次的顶点变换是建立在上一轮(一系列)变换的基础之上的!
4).根据矩阵变换本质的理解,glLoadIdentity并不是简单的理解为将坐标归为世界坐标的原点。而是每次建立顶点的时候,都是以当前物体的中心作为世界的原点的(换句话说,也就是上一轮物体变换之后,原点的位置作为新的物体的中心)。之后再进行各种变换而形成物体的移动、缩放、旋转等效果。从本质上讲,glLoadIdentity并不会改变世界坐标的原点位置,而仅仅是让“栈顶矩阵归位”。但它导致了下一轮顶点变换时,感觉上是以新的物体中心为世界原点的效果!

最新文章

  1. [Centos]升级安装GCC
  2. select问题总结
  3. JavaScript学习12 JS中定义对象的几种方式
  4. ARM学习篇 SDRAM理解
  5. 什么是好的API设计?(转)
  6. CSS3的chapter5
  7. JavaScript:综合案例-表单验证
  8. codeforces 192e
  9. javascript基础学习(十二)
  10. [html5] 初识绘图canvas
  11. webstorm中github的配置
  12. scoring_criteria.go
  13. mobilebone与weiui_example.css 使用问题
  14. android glide图片加载框架
  15. centos 7 network.service control process exited
  16. springmvc中model可以封装的数据类型
  17. vue-router-3-嵌套路由
  18. sort命令的k选项大讨论【转】
  19. 判断easyUI tree 节点复选框是否被选中的方法。将选中的节点高亮显示的方法
  20. 安装64位php开发环境

热门文章

  1. 【原创】rman备份出现ORA-19625
  2. Quartz任务调度 服务日志+log4net打印日志+制作windows服务
  3. springboot --> web 应用开发-CORS 支持
  4. 解决Vue引入百度地图JSSDK:BMap is undefined 问题
  5. caioj 1158 欧拉函数
  6. maven的setting设置
  7. 【Struts2学习笔记(12)】Struts2国际化
  8. 漫谈linux之文件IO篇(SSD写性能和机械硬盘差不多,读是4到10倍)
  9. UTF8有很明显的特征:如果最高字节为0,则表示一个英文字符(与ASCII完全相同)。如果有2个以上1,表示是首个字节。如果最高位是10,则表示一个中间字节。
  10. hdoj--1237--简单计算器(栈模拟)