【发布时间】:2013-01-16 21:46:37
【问题描述】:
我正在尝试实现一些简单的事情:在 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相关。
【问题讨论】:
标签: opengl-es