0
在OpenGL的LWJGL绑定中,我试图制作一个可以根据用户输入进行定位,旋转和缩放的立方体。立方体的旋转意味着基于偏移值,该偏移值是立方体与旋转点之间的距离。OpenGL - Cube使用本地位置进行翻译,而不是全局编码
我面临的唯一问题是立方体的位置与立方体的旋转相关,当我希望它定位时。因此,如果我将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();
正确答案。事实证明,我误诊了我的问题,并有不同的问题,但我会分开解决。 – 2013-05-11 18:07:11