Я пытаюсь создать вложенную структуру 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
}
Похоже, ваша логика неверна. Вы должны только вызывать функцию рисования куба в какой-то момент, примерно так:
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();
}
y
уже установлена на ноль и сбрасывается. У проблемы OPs вряд ли будет что-либо с циклом, не выполняющимся.