坐標系
OpenGL ES
使用右手坐標系,相機默認朝向負z
方向
相機位置|vz軸<----- 0 -----> -near -----> -far -----不可見 可見區域 不可見
裁剪規則
只有z
值在[-near, -far]
范圍內的物體可見, 當z > -near
(在近平面前)或z < -far
(在遠平面后)時被裁剪
1. 正交投影 Matrix.orthoM()
Matrix.orthoM(m, offset, left, right, bottom, top, near, far)
特點:
- 視錐體是長方體
- 平行線保持平行
- 物體大小不隨距離變化
示意圖:+------+| || |
相機 | |O----+------+| || |+------+near far
2. 透視投影 Matrix.frustumM/perspectiveM()
Matrix.frustumM(m, offset, left, right, bottom, top, near, far)
Matrix.perspectiveM(m, offset, fovy, aspect, near, far)
特點:
- 視錐體是截頭錐體
- 近大遠小效果
- 平行線會在遠處相交
示意圖:far+--+/| |/ | |/ | |
相機 / | |O----+----+--+\ | |\ | |\| |+--+near
近遠平面最佳設置
通用規則
- 必須滿足:
far > near > 0
- 渲染區域是
z
軸上的[-near, -far]
范圍,這個區間要包含具體業務場景的長度