когда я создаю список отображения:
GLuint tampilkan()
{
GLuint id = 0;
id = glGenLists(1);
glNewList(id, GL_COMPILE);
//bench
glPushMatrix();
glScalef(1.5,0.2,1.5);
GambarKu();
drawBox();
glPopMatrix();
//backbench
glPushMatrix();
glTranslatef(0.0f,2.5f,-1.3f);
glScalef(1.5,1.5,0.2);
GambarKu2();
drawBox();
glPopMatrix();
.... another foot using the same pattern push-pop matrix
glEndList(); //=========================================================
return id;
}`
затем я вызываю этот список отображения в моей функции «Отображение»:
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glLoadIdentity();
glTranslatef(0.0f, 0.0f, -7.0f);
glRotatef(yrot, 0.0f, 1.0f, 0.0f);
glCallList(tampilkan());
glPopMatrix();
glPushMatrix();
glLoadIdentity();
glTranslatef(0.0f, 0.0f, -5.0f);
glRotatef(yrot, 0.0f, 1.0f, 0.0f);
glCallList(tampilkan());
glPopMatrix();
glutSwapBuffers();
glFlush();
почему там только одна скамья? (другими словами, просто показывая один из моих отображаемых списков)
должно быть 2 скамейки с переводом точки Z на -5.0f и -7.0f
и когда я меняю свой первый список вызовов glTranslatef(0.0f,0.0f,-8.0f), он ничего не меняет в выводе. Но когда я изменил свой второй список вызовов на glTranslatef(0.0f,0.0f,-8.0f) скамьи, выходная скамья перевела свою позицию на -8.0f (дальше, чем до -5.0f)
все, что я получаю, это то, что этот код показывает только мой второй список отображения (с точкой Z на -5.0f) и игнорирует мой первый список отображения.
Кто-нибудь может помочь мне с этим? что я сделал не так?