咱們在這一步獲得了物體在攝像機中看起來的最終座標,可是和咱們人眼能夠看見的景象仍是有所區別,好比咱們看世界上的東西都是由一種近大遠小的透視效果,投影變換就是用來實現這些效果的變換;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];