Я пытаюсь создать кубы в OpenGL/glut с помощью цикла for, но пока я получаю только переполнение.Создание кубов с петлей в opengl
вот код, чтобы создать куб с текстурами:
void Cubes1Class::render()
{
for (int face = 0; face < 6; face++)
{
if (face < 1)
{
glBindTexture(GL_TEXTURE_2D, texHandle[1]);
glBegin(GL_QUADS);
for (int vert = 0; vert <= 4; vert++)
{
glVertex3fv(VertsZ[FacesZ[face][vert]]);
glTexCoord2f(TexZ[vert][0], TexZ[vert][1]);
}
}
else
{
glBindTexture(GL_TEXTURE_2D, texHandle[0]);
glBegin(GL_QUADS);
for (int vert = 0; vert <= 4; vert++)
{
glVertex3fv(VertsZ[FacesZ[face][vert]]);
glTexCoord2f(TexZ[vert][0], TexZ[vert][1]);
}
}
glEnd();
}
}
и это, где я пытаюсь сделать это с цикл:
CubesClass::CubesClass(int num) // constructor
{
numOfCubes = 3;
for (int i=0; i<numOfCubes; i++)
{
lst[i]=new Cubes1Class();
}
}
void CubesClass::render()
{
int x = 0;
numOfCubes = 3;
for (x = 0; x < numOfCubes; x++)
{
glPushMatrix();
glTranslatef(0.0, x, 0.0);
lst[x]->render();
glPopMatrix();
}
}
Я не могу понять, где я «Пошло не так.
Любая идея?
EDIT:
Кубики делают хорошо без для цикла, если я просто делаю то переводить затем сделать то переводить и т.д. Эти массивы:
static GLfloat VertsZ[8][3] = {
{ -0.5, 0.5, -0.5 }, /* 0 left top rear */
{ 0.5, 0.5, -0.5 }, /* 1 right top rear */
{ 0.5, -0.5, -0.5 }, /* 2 right bottom rear */
{ -0.5, -0.5, -0.5 }, /* 3 left bottom rear */
{ -0.5, 0.5, 0.5 }, /* 4 left top front */
{ 0.5, 0.5, 0.5 }, /* 5 right top front */
{ 0.5, -0.5, 0.5 }, /* 6 right bottom front */
{ -0.5, -0.5, 0.5 } /* 7 left bottom front */
};
static GLuint FacesZ[6][4] = {
7, 6, 5, 4, /* front */
6, 2, 1, 5, /* right */
3, 7, 4, 0, /* left */
5, 1, 0, 4, /* top */
7, 6, 2, 3, /* bottom */
2, 3, 0, 1 /* rear */
};
static GLfloat TexZ[4][2] = {
0.0, 0.0,
0.0, 1.0,
1.0, 1.0,
1.0, 0.0
};
cubes1Class пуст в настоящее время
Что вы подразумеваете под «get overflow»? – 1201ProgramAlarm
Можете ли вы показать нам массивы 'VertsZ',' FacesZ' и 'TexZ'? Или еще лучше, можете ли вы дать полную декларацию и реализацию классов 'CubesClass' и' Cubes1Class'? – Tristram
Как только я его визуализирую, он закроет окно, и в окне cmd он выдает ошибку openGL: переполнение стека. – GuyFawkes1313