Внутренний вложенный цикл не будет выполняться

0

Я пытаюсь создать вложенную структуру while-loop, которая создаст сетку 3 * 3 кубов. Кажется, что один раз запускается внутренний цикл, создавая форму "L" из кубов. Итак, я предполагаю, что внутренний цикл while не сбрасывается после его запуска в первый раз, но я действительно явно его перезагружаю.

Я бы предпочел не публиковать весь код, так как некоторые из них являются кодом, предоставленным моей TA, и ему нехорошо публиковать это без их разрешения.

void display()
{
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
   glEnable(GL_DEPTH_TEST);

   UpdateTransform();

   int x = 0;
   int y = 0;
   float Xres = 0;
   float Yres = 0;
   while(x < 3)
   {
     glPushMatrix();
     glTranslatef(Xres,0,0);
     drawOneCube();
     glPopMatrix();

     Xres += 0.3;


     while(y < 3)
     {

       glPushMatrix();
       glTranslatef(0,Yres,0);
       drawOneCube();
       glPopMatrix();


       Yres += 0.3;
       y++;
     }

     y = 0;
     Yres = 0;
     x++;
   }

   glutSwapBuffers();//this prevents that problem where the window copies the contents behind the window, possibly with glClear at the top of this function
}
Теги:
nested-loops
opengl

1 ответ

2
Лучший ответ

Похоже, ваша логика неверна. Вы должны только вызывать функцию рисования куба в какой-то момент, примерно так:

void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glEnable(GL_DEPTH_TEST);
    UpdateTransform();

    int x = 0;
    int y = 0;
    float Xres = 0;
    float Yres = 0;

    for (x = 0; x < 3; ++x)
    {
        Yres = 0;
        for (y = 0; y < 3; ++y)
        {
            glPushMatrix();
            glTranslatef(Xres,Yres,0);
            drawOneCube();
            glPopMatrix();
            Yres += 0.3;
        }
        Xres += 0.3;
    }

    glutSwapBuffers();
}
  • 0
    Спасибо за ответ, однако я все еще получаю тот же вывод "L".
  • 0
    Какое это имеет значение для цикла? Переменная y уже установлена на ноль и сбрасывается. У проблемы OPs вряд ли будет что-либо с циклом, не выполняющимся.
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню