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 を ID に設定することで最も簡単に実現できます。

OpenGL 行列関数に固執する場合は、 を使用glGetFloatv(GL_MODELVIEW_MATRIX, m)して取得し、左上の 3×3 要素を ID に変更し、 を使用glLoadMatrix(m)して OpenGL に戻します。glPushMatrix、glPopMatrix で囲み、効果をローカルに保ちます。

于 2012-11-04T22:34:52.180 に答える