如何在Android中使用OpenGl移动形状?
我已经创建了android应用程序,使用OpentGl绘制mCircle和mTriangle:如何在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
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();
}