当我创建一个显示列表时:
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)并忽略了我的第一个显示列表。
任何人都可以帮助我吗?我做错了什么?