Android OpenGL ES

矩阵本身可以支持加减乘除,对角线全为1的4X4 矩阵成为单位矩阵Identity Matrix 。

  • 将当前矩阵设为单位矩阵的指令 为glLoadIdentity().
  • 矩阵相乘的指令glMultMatrix*() 允许指定任意矩阵和当前矩阵相乘。
  • 选择当前矩阵种类glMatrixMode().  OpenGL ES 可以运行指定GL_PROJECTION,GL_MODELVIEW等坐标系,后续的矩阵操作将针对选定的坐标。
  • 将当前矩阵设置成任意指定矩阵glLoadMatrix*()
  • 在栈中保存当前矩阵和从栈中恢复所存矩阵,可以使用glPushMatrix()glPopMatrix()
  • 特定的矩阵变换平移glTranslatef(),旋转glRotatef() 和缩放glScalef()

OpenGL使用了右手坐标系统,右手坐标系判断方法:在空间直角坐标系中,让右手拇指指向x轴的正方向,食指指向y轴的正方向,如果中指能指向z轴的正方向,则称这个坐标系为右手直角坐标系。


                                                                                                    Android OpenGL ES_第1张图片


Translate平移变换

方法public abstract void glTranslatef (float x, float y, float z) 用于坐标平移变换。

Rotate旋转

方法public abstract void glRotatef(float angle, float x, float y, float z)用来实现选择坐标变换,单位为角度。 (x,y,z)定义旋转的参照矢量方向。多次旋转的顺序非常重要。

Scale(缩放)

方法public abstract void glScalef (float x, float y, float z)用于缩放变换。

矩阵操作,单位矩阵

在进行平移,旋转,缩放变换时,所有的变换都是针对当前的矩阵(与当前矩阵相乘),如果需要将当前矩阵回复最初的无变换的矩阵,可以使用单位矩阵(无平移,缩放,旋转)。

public abstract void glLoadIdentity()。

在栈中保存当前矩阵和从栈中恢复所存矩阵,可以使用

public abstract void glPushMatrix()

public abstract void glPopMatrix()。

在进行坐标变换的一个好习惯是在变换前使用glPushMatrix保存当前矩阵,完成坐标变换操作后,再调用glPopMatrix恢复原先的矩阵设置。



你可能感兴趣的:(Android OpenGL ES)