将圆转动特定角度(openGL)

时间:2012-11-04 17:04:32

标签: c++ opengl glut

我想转动使用此类成员绘制的圆圈:

void Scene1::Circle(float x_, float y_, float z_, float r){
    xx=r*cos(359 * PI/180.0f);
    xy=r*sin(359 * PI/180.0f);
    glBegin(GL_QUADS);
    for(int j = 0; j < 360; j++)
    {
        glVertex3d(xx+x_,xy+y_,z_);
        glVertex3d(x_,y_,z_);
        xx= r * cos(j * PI/180.0f);
        xy= r * sin(j * PI/180.0f);
        glVertex3d(xx+x_,xy+y_,z_);
        glVertex3d(x_,y_,z_);
    }
    glEnd();
}

以特定角度。如果我使用

glRotatef() 

它在某种程度上不起作用。我希望Circle能够始终向凸轮展示他的表面,我想将它用作某种漫画领域。 谁能帮助我?

1 个答案:

答案 0 :(得分:1)

您要实施的是所谓的广告牌。通过将模型视图矩阵的左上角3×3设置为标识,可以很容易地实现这一点。

如果您坚持使用OpenGL矩阵函数,请使用glGetFloatv(GL_MODELVIEW_MATRIX, m)检索它,将左上角的3×3元素更改为标识并使用glLoadMatrix(m)将其重新置于OpenGL中。用glPushMatrix,glPopMatrix包围它以保持效果本地化。