我正在尝试实现一些简单的事情:在 X 轴上设置平移,然后将对象围绕其中心旋转一个固定角度。
为此,据我目前所知,有必要将对象移动到中心,旋转并移回原始位置。好的。我得到的问题是,它看起来像对象旋转它的局部轴并沿这些轴进行最后一次平移,因此它以错误的位置结束。
这是我的代码:
public void draw(GL10 gl) {
gl.glLoadIdentity();
GLU.gluLookAt(gl, 0, 0, 5, 0, 0, 0, 0, 1, 0);
gl.glTranslatef(x, 0, 0);
gl.glTranslatef(-x, 0, 0);
gl.glRotatef(-80, 0, 1, 0);
gl.glTranslatef(x, 0, 0);
gl.glBindTexture(GL10.GL_TEXTURE_2D, textureId);
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
gl.glFrontFace(GL10.GL_CW);
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, verticesBuffer);
gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, textureBuffer);
gl.glDrawElements(GLES20.GL_TRIANGLES, indices.length, GLES10.GL_UNSIGNED_SHORT, indicesBuffer);
}
在旋转之前,对象应位于 0,0,0。它正确旋转。但随后它靠近屏幕,好像 x 轴将指向我(80°)。
注意:我只让“opengl”作为标签,因为这是一个通用的 OpenGL 问题,答案不应该与 Android 相关。