Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 内部嵌套while循环不会执行_C++_Opengl_Nested Loops - Fatal编程技术网

C++ 内部嵌套while循环不会执行

C++ 内部嵌套while循环不会执行,c++,opengl,nested-loops,C++,Opengl,Nested Loops,我试图创建一个嵌套的while循环结构,它将创建一个3*3的立方体网格。它似乎只运行一次内部循环,用立方体创建一个“L”形。所以,我猜内部while循环在第一次运行后不会重置,但我确实会显式重置它 我不想发布全部代码,因为有些代码是我的助教给出的,未经他们允许发布这些代码感觉是错误的 void display() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glEnable(GL_DEPTH_TEST); Upd

我试图创建一个嵌套的while循环结构,它将创建一个3*3的立方体网格。它似乎只运行一次内部循环,用立方体创建一个“L”形。所以,我猜内部while循环在第一次运行后不会重置,但我确实会显式重置它

我不想发布全部代码,因为有些代码是我的助教给出的,未经他们允许发布这些代码感觉是错误的

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
}
void display()
{
glClear(GL_颜色_缓冲_位| GL_深度_缓冲_位);
glEnable(GLU深度试验);
UpdateTransform();
int x=0;
int y=0;
浮点数Xres=0;
浮动Yres=0;
而(x<3)
{
glPushMatrix();
glTranslatef(Xres,0,0);
drawOneCube();
glPopMatrix();
Xres+=0.3;
而(y<3)
{
glPushMatrix();
glTranslatef(0,Yres,0);
drawOneCube();
glPopMatrix();
Yres+=0.3;
y++;
}
y=0;
Yres=0;
x++;
}
glutSwapBuffers();//这可以防止窗口将内容复制到窗口后面的问题,可能是glClear位于此函数的顶部
}

看起来您的逻辑不正确。您应该只在一个点调用多维数据集绘图函数,如下所示:

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();
}
void display()
{
glClear(GL_颜色_缓冲_位| GL_深度_缓冲_位);
glEnable(GLU深度试验);
UpdateTransform();
int x=0;
int y=0;
浮点数Xres=0;
浮动Yres=0;
对于(x=0;x<3;++x)
{
Yres=0;
对于(y=0;y<3;++y)
{
glPushMatrix();
glTranslatef(Xres,Yres,0);
drawOneCube();
glPopMatrix();
Yres+=0.3;
}
Xres+=0.3;
}
glutSwapBuffers();
}

感谢您的回复,但是我仍然得到相同的“L”输出。这对循环有什么影响?变量
y
已设置为零并重置。OPs问题不太可能有任何循环不执行的情况。@mock:要么他添加了,要么我错过了。(我很确定他是因为我的回复才添加的。)(好吧,stackoverflow很有趣!这是我的第一篇帖子,没想到会有这么快的回复!Chad刚刚清理了我的代码,我相信,添加了缩进以使它更漂亮、更可读。我的错:D)但是,仍然在尝试解决这个问题,for loop并没有为我解决它,但是尝试所有的建议。你很聪明,谢谢你,这很好用。是的,我的逻辑是完全错误的,但我现在明白为什么了。谢谢D