一、概念
在OpenGl ES中,将一个3D模型显示到2D屏幕中有以下四个过程。
1. 视角(Viewing)变换
2. 模型(Modeling)变换
3. 投影(Projection)变换
4. 视窗(Viewport)变换
视角(Viewing)变换
相当于你拿着一台照相机移动,从不同的位置来观察一个人,比如下图
模型(Modeling)变换
此时相机不动,人做移动,比如下图
根据相对运动,可以看到视角(Viewing)变换和模型(Modeling)变换的效果是一样的。
投影(Projection)变换
此时相机可以调整远近距离,人不动,这样观察到的也会不一样,比如下图
视窗(Viewport)变换
按下快门之后,需要把像素按照比例转化后显示到屏幕上,这就是视窗(Viewport)变换,对应的就是
// Surface改变的的时候调用
@Override
public void onSurfaceChanged(GL10 gl, int width, int height) {
// 设置窗口大小
gl.glViewport(0, 0, width , height);
}
二、视角(Viewing)变换和 模型(Modeling)变换操作
前面说了,这两者产生的效果是一样的,具体的有以下三种变换
- Translate 平移变换
- Rotate 旋转变换
- Scale 缩放变换
平移变换
在平移变换之前,需调用以下代码才能进行变换
//设置为单位矩阵
gl.glLoadIdentity();
以上一篇绘制的三角形为例子,没移动前