JAVA OpenGL 3D转换

时间:2017-03-26 01:45:47

标签: java opengl

我想在带有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();

1 个答案:

答案 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")