2013-03-21 89 views
2



我试图旋转我的场景,我使用 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++; 
} 

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

回答

1

在绘制四边形之前,您应该调用glRotate()glTranslate()

请记住,转换顺序很重要。旋转总是约为0,0,0,所以如果你首先翻译,它将围绕一个圆圈中的某个点进行“轨道”排序。如果你想让它围绕自己的轴旋转(你可能会这样做)先旋转,然后平移。

这篇文章中有关于转换顺序的部分。

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

+0

那不行,我试过了。当我这样做时,立方体不会围绕自己的轴旋转。 – DealerJoe 2013-03-21 23:22:38

+0

编辑答案。先旋转,然后翻译。 – Zutty 2013-03-21 23:40:25

+0

但即使我只是旋转和不翻译,它什么都不做。 – DealerJoe 2013-03-22 11:49:13