在 OpenGL 的 LWJGL 绑定中,我试图制作一个能够根据用户输入定位、旋转和缩放的立方体。立方体的旋转是基于一个偏移值,即立方体到旋转点的距离。
我面临的唯一问题是当我希望它定位时,立方体的位置是相对于立方体的旋转设置的。因此,如果我将立方体在 X 轴上旋转 45 度,当我希望它全局定位(直接向下)时,更改 Y 位置将使其定位在立方体局部的 45 度角。
请记住,我在 GL 方面不是很有经验,并且仍在使用矩阵及其操作方式。
glPushMatrix();
glTranslatef(pivot.xPos + offsetX, -(pivot.yPos + offsetY + 24), pivot.zPos + offsetZ);
glRotatef(rotX, 1.0F, 0F, 0F);
glRotatef(rotY, 0F, 1.0F, 0F);
glRotatef(rotZ, 0F, 0F, 1.0F);
glTranslatef(-(pivot.xPos + offsetX), (pivot.yPos + offsetY + 24), -(pivot.zPos + offsetZ));
// This is where the cube's location is set. The units are multiplied by two and the Y-location is offset by 24.
glTranslatef(((pivot.xPos + offsetX) * 2 + sizeX), (((pivot.yPos + offsetY) * 2) + sizeY) - 24, -((pivot.zPos + offsetZ) * 2 + sizeZ));
glScalef(sizeX, sizeY, sizeZ);
glBegin(GL_QUADS);
... draws the cube
glPopMatrix();