LWJGL只旋转一个对象





我试图在我的场景中只旋转两个对象中的一个,我在Java中使用LWJGL。
现在,当我尝试旋转一个对象时,它不是围绕中心旋转,而是以大圆圈旋转。在谷歌上搜索之后,我现在知道它应该是这样工作的:

glPushMatrix();
glBegin();
  //Code in here
glEnd();
glRotate();
glPopMatrix();

但这对我不起作用。物体没有旋转。这是我的渲染代码:

    public void render() {
        glPushMatrix();
            glRotatef(rotate, 0, 1.0f, 0);                   
            glBegin(GL_QUADS);
                // Top
                glVertex3f(-centerX + size, centerY + size, -centerZ - size);
                glVertex3f(-centerX - size, centerY + size, -centerZ - size);
                glVertex3f(-centerX - size, centerY + size, -centerZ + size);
                glVertex3f(-centerX + size, centerY + size, -centerZ + size);
                // Bottom
                glVertex3f(-centerX + size, centerY - size, -centerZ + size);
                glVertex3f(-centerX - size, centerY - size, -centerZ + size);
                glVertex3f(-centerX - size, centerY - size, -centerZ - size);
                glVertex3f(-centerX + size, centerY - size, -centerZ - size);
                // One side
                glVertex3f(-centerX + size, centerY + size, -centerZ + size);
                glVertex3f(-centerX - size, centerY + size, -centerZ + size);
                glVertex3f(-centerX - size, centerY - size, -centerZ + size);
                glVertex3f(-centerX + size, centerY - size, -centerZ + size);
                // Moar sides
                glVertex3f(-centerX + size, centerY - size, -centerZ - size);
                glVertex3f(-centerX - size, centerY - size, -centerZ - size);
                glVertex3f(-centerX - size, centerY + size, -centerZ - size);
                glVertex3f(-centerX + size, centerY + size, -centerZ - size);
                // Last side
                glVertex3f(-centerX - size, centerY + size, -centerZ + size);
                glVertex3f(-centerX - size, centerY + size, -centerZ - size);
                glVertex3f(-centerX - size, centerY - size, -centerZ - size);
                glVertex3f(-centerX - size, centerY - size, -centerZ + size);
                // Real last side
                glVertex3f(-centerX + size, centerY + size, -centerZ - size);
                glVertex3f(-centerX + size, centerY + size, -centerZ + size);
                glVertex3f(-centerX + size, centerY - size, -centerZ + size);
                glVertex3f(-centerX + size, centerY - size, -centerZ - size);
            glEnd();
        glPopMatrix();
        rotate++;
}

我现在尝试解决这个问题几个小时,但无法使它工作。

在画四边形之前,应该先调用glRotate()glTranslate()

记住转换的顺序很重要。旋转总是围绕着0,0,0,所以如果你先平移它,它就会绕着圆上的一点"绕轨道"。如果你想让它绕着自己的轴旋转(你可能会这样做),先旋转,然后平移。

本文中有一节是关于转换顺序的。

http://www.glprogramming.com/red/chapter03.html

最新更新