内部嵌套while循环不会执行

时间:2014-02-01 03:53:14

标签: c++ opengl nested-loops

我正在尝试创建一个嵌套的while循环结构,它将创建一个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
}

1 个答案:

答案 0 :(得分: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();
}