我不会在这里发布我的整个程序,因为它有点太长了。但我有这个渲染器(缩短):
class OpenGLRenderer implements Renderer {
private CubicPolygon cube;
public OpenGLRenderer(Context context) {
this.context = context;
cube = new CubicPolygon();
}
public void onDrawFrame(GL10 gl) {
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
gl.glLoadIdentity();
gl.glTranslatef(0.0f, 0.0f, -9.0f);
gl.glScalef(0.8f, 0.8f, 0.8f);
// If it's just a regular rotation
if (!numberHasBeenDrawn) {
gl.glRotatef(getXRotation(rotatingOfDOOMFire), 1, 0, 0);
gl.glRotatef(getYRotation(rotatingOfDOOMFire), 0, 1, 0);
gl.glRotatef(getZRotation(rotatingOfDOOMFire), 0, 0, 1);
}
// If there is a chosen one (number that is)
if (numberHasBeenDrawn) {
gl.glRotatef(xAnimation(number), 1, 0, 0);
gl.glRotatef(yAnimation(number), 0, 1, 0);
}
gl.glFinish();
cube.draw(gl);
}
现在我想做的是在“numberHasBeenDrawn”if 语句中获取该立方体对象的当前旋转值,这样我就可以创建一个平滑的结束动画来旋转立方体。OpenGL 可能将所有旋转值保存在一个方便(几乎不可读)的矩阵中,但经过一番谷歌搜索后,我真的找不到关于 WHERE 的任何信息(只是如何最初旋转一个对象,我已经这样做了)。
// 编辑:如果您想查看更多代码以帮助我,请继续询问,这并不是什么秘密,我也可以发布它;)