glRotatef没有更新

时间:2015-06-05 13:54:38

标签: android opengl-es rotation

我想使用下面的代码将360度旋转360度。我在另一个程序(Range = 0到1)上改变“输入”。

尽管“输入”正确改变,我似乎无法更新屏幕上四边形的旋转 - 它仍然保持在第一个角度,例如如果输入为0.5,则为180.

@Override
public void onDrawFrame(GL10 gl) {
    gl.glLoadIdentity();
    GLU.gluOrtho2D(gl, 0, width, height, 0);

    gl.glClearColor(0.f, 0.f, 0.f, 1f);
    gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
    gl.glColor4f(1f, 1f, 1f, 1f);

    gl.glPushMatrix();
      gl.glTranslatef(width/2, height/2, 0.0f);
      gl.glRotatef(360 * input, 0.0f, 0.0f, 1.0f);
    gl.glPopMatrix();

    bgQuad.setX(0);
    bgQuad.setY(0);

    bgQuad.draw(gl);
}

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

popMatrix移至bgQuad.draw(gl);之后:

@Override
public void onDrawFrame(GL10 gl) {
    gl.glLoadIdentity();
    GLU.gluOrtho2D(gl, 0, width, height, 0);

    gl.glClearColor(0.f, 0.f, 0.f, 1f);
    gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
    gl.glColor4f(1f, 1f, 1f, 1f);

    gl.glPushMatrix();
      gl.glTranslatef(width/2, height/2, 0.0f);
      gl.glRotatef(360 * input, 0.0f, 0.0f, 1.0f);


      bgQuad.setX(0);
      bgQuad.setY(0);

      bgQuad.draw(gl);
    gl.glPopMatrix();
}

glPopMatrix将矩阵重置为最近保存的矩阵并丢弃当前矩阵。