这一课,来学习旋转
首先在第2课的基础上,添加代码
我们加入一个类
private float xrot;//我们定义一个浮点数用来控制旋转
private Animator animator; //用于动画的播放
在void run()中添加
animator.start();
在init(GLAutoDrawable drawable)中加入
animator=new Animator(canvas);//实例化对canvas,刷新
(由于在编写的时候没仔细出现代码里面修改了,但是这里没有说明的情况,还请见谅 )
glRotate:void glRotatef(GLfloat angle,GLfloat x,GLfloat y,GLfloat z)
angle:旋转的角度,x,y,z:指定要绕着旋转的轴只要把x,y,z赋值为1.0就可以
我们再在display(GLAutoDrawable drawable)中添加些代码
public void display(GLAutoDrawable drawable)
{
GL gl = drawable.getGL();
gl.glLoadIdentity(); //重置矩阵
gl.glClear(GL.GL_COLOR_BUFFER_BIT); //清除颜色缓冲
gl.glTranslatef(0.0f, 0.0f, -6.0f); //向内(Z轴负方向)移动6
//---------添加的新代码
gl.glRotatef(xrot, 1.0f, 0.0f, 0.0f);
xrot+=0.1f;
if(xrot>360){
xrot=0;
}
//---------------------
gl.glTranslatef(-2.0f, 0.0f, 0.0f);
//gl.glColor3f(0.0f, 1.0f, 0.0f); //设置颜色(r,g,b)绿色
gl.glBegin(GL.GL_QUADS); //开始绘制多边形
gl.glColor3f(1.0f, 0.0f, 0.0f);gl.glVertex3f(-1.0f, -1.0f, 0.0f); //第1个顶点
gl.glColor3f(0.0f, 1.0f, 0.0f);gl.glVertex3f(1.0f, -1.0f, 0.0f); //第2个顶点
gl.glColor3f(0.0f, 0.0f, 1.0f);gl.glVertex3f(1.0f, 1.0f, 0.0f); //第3个顶点
gl.glColor3f(1.0f, 1.0f, 0.0f);gl.glVertex3f(-1.0f, 1.0f, 0.0f); //第4个顶点
gl.glEnd();
//---------添加的新代码
gl.glRotatef(xrot, 0.0f, 1.0f, 0.0f);
//---------------------
gl.glTranslatef(4.0f, 0.0f, 0.0f);
gl.glBegin(GL.GL_TRIANGLES); //开始绘制多边形
gl.glColor3f(1.0f, 0.0f, 0.0f);gl.glVertex3f(-1.0f, -1.0f, 0.0f); //第1个顶点
gl.glColor3f(1.0f, 1.0f, 0.0f);gl.glVertex3f(1.0f, -1.0f, 0.0f); //第2个顶点
gl.glColor3f(0.0f, 1.0f, 0.0f);gl.glVertex3f(1.0f, 1.0f, 0.0f); //第3个顶点
gl.glEnd();
}
好了现在可以实现动画了,四方体和三角形都动起来了
声明:
刚开始学习opengl的时候,在网上找了很久,终于找到NeHe的教程,从中得到了很多
我也希望我自己东拼西凑弄共享给大家,我也希望有更多的人加入进来,
引用时请声明此点,如果有问题请多多指教,大家互相帮助了我的E-mail:
[email protected]