栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Android OpenGL ES 知识总览2——坐标系

Android OpenGL ES 知识总览2——坐标系

坐标变换

在3D坐标空间中,用于表示图形的数据一定包含位置信息 ( x , y , z ) (x,y,z) (x,y,z),但是除此之外,还要有一个量用于标定用户视角与被观测物体的距离关系,用户视角由成为摄像机Camera,因此需要增加一个维度取名叫 w w w,那么着色器的坐标gl_Position就会多增加一个量成为一个四维向量 ( x , y , z , w ) (x,y,z,w) (x,y,z,w)。 这套OpenGL的坐标系统被称为归一化设备坐标。既然 w w w分量定义了视角关系,那么它相当于定义了一个距离空间,这个空间要求 ( x , y , z ) (x,y,z) (x,y,z)这三个分量的都要在 ( − w , w ) (-w,w) (−w,w)的范围内取值,这个空间被称为剪裁空间。

透视除法

由于 w w w用来表示点对摄像机的距离,那么对于一个正方体来说,这个正方体看起来就不那么“正”了,对于一个正方体来说,每个点的属性除了 ( x , y , z ) (x,y,z) (x,y,z)还增加了距离 w w w,并且在绘制时还增加了一个步骤,绘制最终位置时实际上做了一个操作 ( x w , y w , z w ) (frac{x}{w},frac{y}{w},frac{z}{w}) (wx​,wy​,wz​),使得最终点的位置是一个近大远小的透视化正方体。

一般一个正方体,在笛卡尔坐标轴上,正常的显示是一个这样的:

存在摄像机透视关系的正方体,看不出正方体前后两个面相对于摄像机的距离关系。

而增加了透视关系之后,则有了对于摄像机来说近大远小的关系,如下:

存在摄像机透视关系的正方体,能看的出正方体的两个面有着相当明显的距离。
最终我们不会因为 z z z轴的数值多增加了一个相对的观测距离这个意义,而是让观测作为一个单独的位置分量,而不是让距离这个属性影响物体所在位置的 z z z坐标分量。

指定ViewPort参数

我们之前已经调用过了GL10.glViewport(0, 0, width, height),这个视口指定了OpenGL视口要绘制的起点坐标与宽高,最终绘制的坐标都只要接收 ( − 1 , 1 ) (-1,1) (−1,1)范围内的坐标值,这样就可以统一限定与设备无关的坐标值。

视口坐标系

从顶点着色器坐标点到透视图的渲染经历以下流程:

裁剪过程将会把符合 { x ∣ − w ≤ x ≤ w } {x|-wleq x leq w} {x∣−w≤x≤w}, { y ∣ − w ≤ y ≤ w } {y|-wleq y leq w} {y∣−w≤y≤w}, { z ∣ − w ≤ z ≤ w } {z|-wleq z leq w} {z∣−w≤z≤w} 条件的点集经过透视除法组成的空间绘制出来,不符合条件的不予绘制。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/457675.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号