咱们在这一步获得了物体在摄像机中看起来的最终坐标,可是和咱们人眼能够看见的景象仍是有所区别,好比咱们看世界上的东西都是由一种近大远小的透视效果,投影变换就是用来实现这些效果的变换;html
正交投影,能够看作是一种平行投影,正交投影下的物体没有近大远小的视觉效果,不管远近看起来都是同样大的,该投影通常用在2D或2.5D(通常是3D角色2D场景)游戏中,3D游戏的UI实现也会用到该投影;git
使用gl-matrix库建立正交投影代码以下:github
1 var m4 = glMatrix.mat4.create(); 2 // 经过设定每一个面的大小肯定投影区域 3 glMatrix.mat4.ortho(m4, -100, 100, -100, 100, -100, 100);
透视投影,能够模拟人眼所看见的3D世界的近大远小的视觉效果,该投影通常用在3D游戏中;less
使用gl-matrix库建立透视投影代码以下:spa
1 var m4 = glMatrix.mat4.create(); 2 // 方法1:经过垂直范围、高宽比和近远面肯定投影区域 3 glMatrix.mat4.perspective(m4, 1, 1, 0, 100); 4 // 方法2:经过设定每一个面的大小肯定投影区域 5 glMatrix.mat4.frustum(m4, -100, 100, -100, 100, -100, 100);
透视除法即便用w份量除以x,y,z份量(w默认值是1),产生三维的透视效果。3d
更多的信息能够参考:https://www.jianshu.com/p/7e701d7bfd79code
视口变换主是将三维空间中的物体投影到二维的平面上,在计算机图形学中,它的定义是将通过几何变换,投影变换和裁剪变换后的物体显示于屏幕指定区域内。htm
用户能够经过调用两个方法来控制这个步骤的变换:blog
肯定最终显示的位置和尺寸,单位为像素;继承
肯定最终能够显示出来的深度区域,可选范围[0-1];