本文通过学习《OpenGL ES应用开发实践指南》,了解透视投影并使用
代码地址
相关博文:
安卓OpenGL ES 2.0 入门
安卓OpenGL ES——正交投影
一、透视除法
1.1 透视除法介绍
顶点着色器上的原始坐标通过透视除法这一步骤变成归一化设备坐标。
OpenGL把每个原始坐标的x、y和z分量都除以自身的w分量,即用w分量表示物体的距离,使得远处物体被移动到离渲染中心更近的地方。OpenGL使用这种方法在屏幕上呈现一个三维图像。
顶点(1,1,1,1)和(1,1,1,2)做透视除法后两个坐标变为(1/1,1/1,1/1)和(1/2,1/2,1/2);同理当w很大的时候(x/w,y/w,z/w)趋近于(0,0,0),即在渲染中心
1.2 添加w分量创建三维图
绘制一个矩形,只用到x和y分量,z和w保持默认
顶点数据:
private static final float[] VERTEX = {
//Triangle 1
-0.5f, -0.8f,
0.5f, 0.8f,
-0.5f, 0.8f,
//Triangle 2
-0.5f, -0.8f,
0.5f, -0.8f,
0.5f, 0.8f
}
结果: