学习本文前建议先学习前文opengl es相关矩阵知识:
解决android opengl es绘制物体屏幕横竖屏切换物体压扁形变以及矩阵相关知识
在上文中我们知道要把空间物体(下图传给顶点着色器的gl_position坐标)最终显示在二维屏幕需要经过归一化设备坐标(在[-1,1]范围),实际opengl经过了具体过程可以用如下流程图来表示:
即两个变换和三个不同坐标空间。
可见从gl_position到归一化设备坐标之间的透视除法是很关键的,opengl具体是怎么做的呢,见下文?
透视除法:
回到我们的初心,opengl要解决的问题是在二维平面显示三维图像,这怎么做到尼?这其实是利用了人们大脑的幻象。
我们可以把相对较远的物体在二维屏幕上显示的小一点,比较近的物体我们在屏幕上呈现大一点,比如看铁路,近的看上去大一点,远了小一点这样就有空间感。那么具体多远多大才合适尼?在