0

我喜欢转动这个类成员绘制的圆圈:

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 始终向凸轮显示他的表面,我想将其用作某种 Comic-Sphere。谁能帮我?

4

1 回答 1

1

您要实现的是所谓的广告牌。这最容易通过将模型视图矩阵的左上角 3×3 设置为标识来实现。

如果你坚持坚持使用OpenGL矩阵函数,使用glGetFloatv(GL_MODELVIEW_MATRIX, m)检索它,将左上角的3×3元素更改为恒等,然后使用glLoadMatrix(m)将其放回OpenGL。用 glPushMatrix、glPopMatrix 将其包围以保持局部效果。

于 2012-11-04T22:34:52.180 回答