0

私は 2D の星を持っていますが、その中心を中心に回転させる方法がわかりません。また、キーボードのキーを使って回転させる方法もわかりません。また、オブジェクトを特定の割合で大きくしたり小さくしたりするにはどうすればよいですか (ピクセルを変更してやろうとすると、星がうまくいかないためです)。

これは私のコードです:

#include <GL/glut.h>
#include <GL/gl.h>
#include <GL/freeglut.h>

void init (void)
{
    glClearColor(0.0,0.0,0.0,00);
    glMatrixMode(GL_PROJECTION);
    gluOrtho2D(0.0,200.0,0.0,200.0);

}
void LineSegment(void)
{
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(1.0,1.0,1.0);
    glBegin(GL_LINE_LOOP);
    glVertex2i(20,120);
    glVertex2i(180,120);
    glVertex2i(45,20);
    glVertex2i(100,190);
    glVertex2i(155,20);
    glEnd();
    glFlush();
}
int main(int argc,char** argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
    glutInitWindowPosition(50,100);
    glutCreateWindow("STAR");
    init();
    glutDisplayFunc(LineSegment);
    glutMainLoop();
    return 0;
}
4

1 に答える 1

2

z 軸を中心に glRotatef() 関数で星を回転させた場合、星はその中心を中心に回転するはずです。回転を測定するグローバル変数を作成し、使用するキーでその値を増減します。したがって、glRotatef(角度、0.0f、0.0f、1.0f); トリックを行う必要があります。NeHe のチュートリアルをチェックしてください。私が見つけたこのチュートリアルは特に役に立ちます: http://nehe.gamedev.net/

1 から 10 までの必要なものをチェックしてください。キーボードの制御や回転などに関するものがいくつかあります。

また、スケーリングするには、 glScalef() も試して、計算を行ってパーセンテージでインクリメントすることができますが、それほど難しくありません。

うまくいけば、それらのいくつかは役に立ちます。私はこれらすべてにかなり慣れていません>.>

于 2012-07-10T07:03:08.243 に答える