我试图在我的场景中只旋转两个对象中的一个,我在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