1

OpenGL 2.0 で雪だるまを作成したいと思います。図形全体を回転させたいのですが、プログラムを実行するたびにうまくいきません。

    glPushMatrix();

    //bottom sphere
    glTranslated(tranX,tranY-2,tranZ);
    glRotated(rotX,1,0,0);
    glRotated(rotY,0,1,0);
    glRotated(rotZ,0,0,1);
    glScaled(scaX,scaY,scaZ);

    glColor3f(1.1,.7,.99);
    glutSolidSphere(1.5,30,30);

    //middle sphere
    glTranslated(tranX,tranY+2.3,tranZ+8);
   glRotated(rotX,1,0,0);
    glRotated(rotY,0,1,0);
    glRotated(rotZ,0,0,1);
    glScaled(scaX,scaY,scaZ);

    glColor3f(1.1,.7,.99);
    glutSolidSphere(1.3,30,30);

    //top sphere
    glTranslated(tranX,tranY+2,tranZ+10);
    glRotated(rotX,1,0,0);
    glRotated(rotY,0,1,0);
    glRotated(rotZ,0,0,1);
    glScaled(scaX,scaY,scaZ);

    glColor3f(1.1,.7,.99);
    glutSolidSphere(1,30,30);
glPopMatrix();
4

1 に答える 1

2

OpenGL 変換について知っておくべきことは、個々のオブジェクトではなく、現在の座標系を変更するということです。たとえば、 を呼び出すとglRotated、指定された軸を中心に指定された角度だけ座標系が回転し、( 、 などを呼び出して) マトリックスを変更または置換するまで、呼び出し後にレンダリングするジオメトリのすべてのビットに影響しglPopMatrixますglLoadMatrix

あなたの例では、雪だるまの各球を回転させますが、シーン内のすべてのオブジェクトに影響を与える包括的な回転はありません。glPushMatrixシーン全体に影響を与えたい回転を、呼び出しの直後にルーチンの先頭に配置してみてください。

于 2013-03-03T02:47:25.597 に答える