OpenGL, изменить форму моего розыгрыша - PullRequest
0 голосов
/ 24 марта 2011

Я делаю программу, которая будет иметь меню и подменю.

РЕДАКТИРОВАНИЕ ------------------------------------------------

Подменю "shape" не работает, когда я вызываю его.

Когда я вызываюменю формы, оно должно рисовать, например, квадрат или треугольник или круг.

Я помещаю образец моего кода здесь.чтобы изменить форму, ничего не происходит. Как видите, я использую «draw» для вызова соответствующей формы. У меня либо ошибка в функции myDisplay, либо в функции shape_menu.Спасибо

отредактировано ---------------------------------------------------------------------------

Мне наконец-то удалось это, кроме одного. Когдаон рисует круг, я не могу его переместить. Он не реагирует на щелчок мыши в окне.Мои исправления:

...
void shape_menu (int n){

switch (n) {

case 2: draw=2;break;

case 3: draw=3;break;

case 4: draw=4;break;


}
glutPostRedisplay();

}
...
void myDisplay()
{
    if(CLEARFLAG) glClear(GL_COLOR_BUFFER_BIT);
    else if (draw==1) {mydraw(xpos,ypos);}
    else if (draw==2) {square(xpos,ypos);}
    else if (draw==3) {triangle(xpos,ypos);}
    else if (draw==4) {circle(xpos,ypos);}
    glutSwapBuffers();
}
....

, и я также удалил «draw == 1» из своих функций.Функция, которая дает круг:

void circle(float x,float y )
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    int numpoints=84;
    glColor3f(col1,col2,col3);
    glBegin( GL_LINE_STRIP );
    int i;
    for(i=0; i<numpoints; i++ )
    {
    float angle = i * (2.0*PI/numpoints);
    x = cos( angle )*l;
    y = sin( angle )*l;

    glVertex2f(x,y);
    }
    glEnd();
}

Как мне решить мою проблему?

1 Ответ

1 голос
/ 24 марта 2011

OpenGL не является графом сцены. Это API рисования.

Это означает, что вы не «добавляете» объекты в какую-то иерархию. То, что вам нужно сделать, это сохранить, какие объекты рисовать, с каким размером, а затем при рисовании повторять этот список и рисовать вещи в соответствии с тем, что в нем хранится.

...