我是android OpenGL的新手。我可以沿圆形路径旋转纹理,但是问题是当我旋转图像时会倾斜。从而使图像不正确。
如果要旋转图像,则需要将其平移到原点,在原处进行旋转,然后再将其平移回原来的位置。
[如果您希望图像绕圆移动,可以尝试将其平移到原点,以相反的方向旋转,平移回去,然后执行已经在做的旋转。
有两种补偿方法:
或
/* This draws a textured quad at the origin; use the modelview to position it */ void draw_textured_quad(void); void draw_dial(float quad_angular_position) { glMatrixMode(GL_MODELVIEW); glPushMatrix(); glRotatef(-angular_position, 0, 0, 1); /* counterrotate the quad */ glTranslatef(dial_radius, 0, 0); /* move to the dial */ glRotatef(angular_position, 0, 0, 1); /* revolve around the dial */ draw_textured_quad(); glPopMatrix(); }
解决方案2:
/* This draws a textured quad at the origin; use the modelview to position it */
void draw_textured_quad(void);
void draw_dial(float quad_angular_position)
{
glMatrixMode(GL_TEXTURE);
glPushMatrix();
glRotatef(angular_position, 0, 0, 1); /* rotate the texture_space _with_ the quad */
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glTranslatef(dial_radius, 0, 0); /* move to the dial */
glRotatef(angular_position, 0, 0, 1); /* revolve around the dial */
draw_textured_quad();
glMatrixMode(GL_TEXTURE);
glPopMatrix();
glMatrixMode(GL_MODELVIEW);
glPopMatrix();
}
处理此问题的另一种方法是更改顶点和文本坐标的顺序