一、在OpenGL ES中,将一个3D模型显示到2D屏幕中有以下四个过程
1.视角(Viewing)变换
2.模型(Modeling)变换
3.投影(Projection)变换
4.视窗(Viewport)变换
二、视角(Viewing)变换和模型(Modeling)变换操作
这两者产生的效果是一样的,具体的有一下三种变换:
- -Translate 平移变换
- -Rotate 旋转变换
- -Scale 缩放变换
1.平移变换
在平移变换之前,调用一下代码
//设置单位矩阵
gl.glLoadIdentity();
调用gl.glTranslatef(float x,float y, float z)方法进行平移
//向右移动0.6个x坐标
gl.glTranslatef(0.6f,0f,0f)
2.旋转变换
调用gl.glRotatef(float angle,float x,float y,float z)
//以经过(0.1f,0.1f)的直线为轴逆时针旋转70度
gl.glRotatef(70,0.1f,0.1f,0f);
3.缩放变化
调用gl.glScalef(float x,float y,float z)
//x、y、z均变为原来的0.5倍
gl.glScalef(0.5f,0.5f,0f)
MainActivity.java
public class MainActivity extends AppCompatActivity {
public static GLSurfaceView glSurfaceView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
glSurfaceView = new GLSurfaceView(this);
glSurfaceView.setRenderer(new MyRenderer());
glSurfaceView.setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
setContentView(glSurfaceView);
}
}
MyRenderer.java
public class MyRenderer implements GLSurfaceView.Renderer {
private float[] mArray = new float[]{
0f,0f,0f,0.5f,0f,0f,0.25f,-0.5f,0f};
private int[] colorArray = new int[]{
65535,0,0,0,
0,65535,0,0,
65535,655535,0,0};