C++ 内部嵌套while循环不会执行
我试图创建一个嵌套的while循环结构,它将创建一个3*3的立方体网格。它似乎只运行一次内部循环,用立方体创建一个“L”形。所以,我猜内部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
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