OpenGL ES 之投影及各种变换及绘制方式

本文介绍了OpenGL ES中的两种投影方式:正交投影和透视投影,以及它们的区别。此外,详细阐述了平移、选择和缩放三种变换,并解析了变换的实质。最后,讨论了顶点法和索引法这两种不同的绘制方式。
摘要由CSDN通过智能技术生成
两种投影方式

我们知道,在图元装配之后的光栅化阶段前,首先需要把虚拟3D世界的物体投影到二维平面上。OpenGL ES中常用的投影模式有两种,分别是正交投影与透视投影:

正交投影

OpenGL ES 2.0中,根据应用程序提供的投影矩阵,管线会确定一个可视空间区域,称之为视景体。视景体是由6个平面确定的,这6个平面分别为:上平面(up),下平面(down),做平面(left),右平面(right),远平面(far),近平面(near)。

场景中处于视景体内的物体会被投影到近平面上(视景体外的物体将被裁剪掉),然后再将近平面上投影出的内容映射到屏幕上的视口中。
对于正交投影而言,视景体及近平面的情况如图:

zhengjiao.png

我们可以看到,正交投影是平行投影的一种,其视景体是长方体,投影到近平面上的图形不会产生“近大远小”的效果。

我们可以这样来进行正交投影的设置:

Matrix.orthoM(
            mProjectMatirx, //投影矩阵
            0, //偏移量
            left,right,//near面的left,right
            bottom,top,//near面的bottom,top
            near,far//near面,far面与视点的距离
    );
透视投影

现实世界中,人眼观察物体时会有“近大远小”的效果,这种效果,是不能用正交投影来实现的,可以采用透视投影。透视投影的投影线是不平行的,他们相交于视点。

toushi.png

我们可以看到,透视投影的投影线互不平行,都相交于视点。因此同样尺寸大小的物体,近处的投影出来大,远处的投影出来小,从而产生了“近大远小”的效果。

我们可以这样来进行透视投影的设置:

Matrix.frustumM(
            mProjectMatirx, //投影矩阵
            0, //
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值