Android openGl学习笔记二,gl的旋转、位移、放大缩小

这章文章是对上一篇的进一步学习,最终以达到类似动画效果的目的。
不管什么时候参考资料放在第一位:<a href="http://blog.csdn.net/zhoudailiang/article/details/50176143">学习参考资料</a>
这个是本人经过层层筛选后感觉比较全且比较易懂的文章了,学习记录将按照此链接的博客逐步深入学习,在此感谢博主。

与动画一样的套路,glTranslates、glRotatef、glScalef分别对应位移、旋转、缩放。理所当然的,这些方法都是可以组合使用的,但是~但是!代码的前后,即执行的顺序不同,便会出现不同的效果。
例子:盗用一下链接的图:

image.png

文中出现两个函数 glPushMatrix()和glPopMatrix();
glPushMatrix()在执行glTranslates()、glRotatef()、glScalef()前调用
目的是保存当前矩阵
glPopMartrix()在以上函数执行后调用,目的是恢复原先的矩阵设置
(亲测。这两个函数单写一个或者忽略不写的情况下,暂未发现不妥之处。)

接下来研究下glTranslates、glRotatef、glScalef三个函数对应的xyz值代表的含义
首先先理解XYZ轴的关系,其实很好理解,就是高中时候的三维坐标在,
具体的:x轴、y轴分别对应手机屏幕的宽、高。而z轴是垂直于手机屏幕的(可以理解成眼睛正对于手机平面的视角,即手机与眼睛练成的线就是Z轴,手机屏幕正面是正数,屏幕背后是负数)即z轴的值越小,这个图形就越小。z轴的值越大即图形越大甚至超出屏幕(超出屏幕就看不到了,具体是否是这样有待考察)。以笔记一的方块正方形为例,gl(0,0,-1);z轴是-1的时候,视图才会在屏幕中出现....
z轴与视图的x、y息息相关,(有点类似将整体坐标轴向后拉的感觉,默认屏幕中心为原点,右边为X 正1 左边为X轴 -1 ,即从原点到屏幕边缘默认长度为1)
上两个Z轴坐标-10 和-20的图做对比

![Uploading QQ图片20170523162014_642574.png . . .]
image.png

接下来是-20的


QQ图片20170523162008.png
image.png

通过观察,同样的X轴移动3f,在Z轴的值为-10、-20时产生的效果是不一样的,对比第一张图,正方形显示不全,第二张图显示完全并且与手机屏幕的右侧相距一定的距离,这感觉就像是正方向整个视图被拉远了产生的效果,这也是我之前提到的视线.....以此为基础,更改Y轴的值产生的效果是一样的。
这也就可以理解为什么在第一张贴图先平移后缩放跟先缩放后平移的效果产生的差异的原因了。(可以理解成:位移21=2, 然后再缩小0.5倍,而调换顺序后 是缩小0.5倍之后, 再位移20.5=1 ,这样就产生了差异化)

补充一下:onDrawFrame(GL10 gl) 这个方法大概13-21秒执行 一次,其中16-17毫秒居多。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1 前言 OpenGL渲染3D模型离不开空间几何的数学理论知识,而本篇文章的目的就是对空间几何进行简单的介绍,并对...
    RichardJieChen阅读 7,179评论 1 11
  • 看了很多视频、文章,最后却通通忘记了,别人的知识依旧是别人的,自己却什么都没获得。此系列文章旨在加深自己的印象,因...
    DCbryant阅读 1,896评论 0 4
  • CSS的变形对应的属性是transform,它的作用是修改元素自身的坐标空间。这个修改实际对应了一个坐标系统映射转...
    荷小音阅读 1,142评论 1 5
  • CSS里transform变形这个属性有点学习难度,尤其在CSS3里加上了3D效果之后,2维变3维学习成本更是成倍...
    张歆琳阅读 28,011评论 5 81
  • 选择qi:是表达式 标签选择器 类选择器 属性选择器 继承属性: color,font,text-align,li...
    wzhiq896阅读 1,805评论 0 2