我有一些立方体的显示列表......非常简单的东西。这是一个片段:
GL11.glPushMatrix
GL11.glRotatef(90,0,0,1)
cuboid(1,0.5,20) //just glVertex calls
GL11.glPopMatrix
如果我使用它以立即模式绘制,则不会发生任何奇怪的事情。但是,如果我将它放在显示列表中,它将首先绘制未旋转的长方体,然后旋转(或我在 glPushMatrix 和 glPopMatrix 之间进行的任何转换)。此外,如果我不使用 glPush 和 glPop 它的行为符合预期。
在显示列表中使用 glPush/PopMatrix 时有什么我需要知道的吗?
编辑:添加更多源代码:
handle = GL11.glGenLists(1);
GL11.glNewList(handle,GL11.GL_COMPILE)
GL11.glBegin(GL11.GL_LINES);
GL11.glPushMatrix //if I don't use these it behaves as expected
GL11.glRotatef(90,0,0,1)
cuboid(1,0.5,20) //just glVertex calls
GL11.glPopMatrix
GL11.glEnd();
GL11.glEndList();
EDIT2:我通过将 glBegin 与 glPushMatrix 和 glEnd 与 glPopMatrix 交换来使其工作 - 我不喜欢它现在的样子,但至少它可以工作。据我所知,这是不正常的,我所做的只是一个把戏,所以我把这个问题留了下来。
GL11.glPushMatrix //everytime I want to push/pop I have to call glBegin and glEnd
GL11.glBegin(GL11.GL_LINES);
GL11.glRotatef(90,0,0,1)
cuboid(1,0.5,20) //just glVertex calls
GL11.glEnd();
GL11.glPopMatrix