いくつかの立方体の表示リストがあります...非常に単純なものです。ここにスニペットがあります:
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