我想在带有Java OpenGL的SolidCube上应用两个转换。 我正在使用方法“gl.glPushMatrix()”和“gl.glPopMatrix”,但我需要使用它两次,就像有一种方法来获得第一次转换产生的矩阵,以便直接使用它“gl.glPushMatrix()” - “gl.glPopMatrix”bloc?
一个例子:
gl.glPushMatrix();
gl.glTranslatef(1, 0, 1);
glut.glutSolidCube(1);
gl.glPopMatrix();
现在我需要在新的位置(从点1,0,1)对立方体进行另一次转换,如果可能的话,使用另一个Push / PopMatrix。
gl.glPushMatrix();
(how to get the new position of the cube here ?)
gl.glPopMatrix();
答案 0 :(得分:0)
你可以嵌套glPushMatrix()
glTranslatef(1, 0, 0)
// draw something
glPopMatrix()
glPushMatrix()
glTranslatef(1, 0, 0) // same as before
glTranslatef(0, 1, 0) // additional translation
// draw something else
glPopMatrix()
个电话,这就是它们的全部要点。
换句话说:
glPushMatrix()
glTranslatef(1, 0, 0)
// draw something
glPushMatrix()
glTranslatef(0, 1, 0) // now we only need the additional translation
// draw something else
glPopMatrix()
glPopMatrix()
与:
相同glPushMatrix()
所以当你翻译,旋转等等时。如果你想保存那个状态,你可以调用glPopMatrix()
。然后,您可以应用其他翻译,轮换等。然后,当您想要回到状态时,请拨打document.querySelectorAll("li")
。