如何在Android中使用OpenGl移动形状?

如何在Android中使用OpenGl移动形状?,android,opengl-es,Android,Opengl Es,我已经创建了android应用程序,使用OpentGl绘制mCircle和mTriangle: public void onDrawFrame(GL10 gl) { gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); //Draw Triangle gl.glLoadIdentity(); gl.glTranslatef(0.0f, 0.0f, -10.0f); mTrian

我已经创建了android应用程序,使用OpentGl绘制mCircle和mTriangle:

public void onDrawFrame(GL10 gl) {
    gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);

    //Draw Triangle
    gl.glLoadIdentity();
    gl.glTranslatef(0.0f, 0.0f, -10.0f); 
    mTriangle.draw(gl); // Draw triangle 

    //Draw Circle
    gl.glTranslatef(-1.5f, 0.0f, -20.0f);
    mCircle.draw(gl);
}
我的问题是,当我尝试通过以下方式移动mTriangle时:

   gl.glTranslatef(NewX, NewY, -10.0f);
然后麦凯勒也在移动


我的问题是,如何仅移动mTriangle(mCircle的位置是固定的(0,0))?或者可以在运行时更改mTriangle位置的命令是什么?

将变换应用于当前模型矩阵。每个新的变换都在该矩阵中累积。为了保持初始转换,OpenGL(您能在我的代码中应用glPushMatrix()和glPopMatrix()吗?
//For each model

    glPushMatrix() //save current matrix

    // Apply current model transformations 

    // Render model

    glPopMatrix() //restore matrix
public void onDrawFrame(GL10 gl) {
    gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);

    gl.glLoadIdentity(); 

    //Draw Triangle
    gl.glPushMatrix();
    gl.glTranslatef(NewX, NewY, -10.0f);
    mTriangle.draw(gl); // Draw triangle 
    gl.glPopMatrix();


    //Draw Circle
    gl.glPushMatrix();
    gl.glTranslatef(-1.5f, 0.0f, -20.0f);
    mCircle.draw(gl);
    gl.glPopMatrix();

}