2014-04-01 31 views
0

我目前使用LWJGL创建一个简单的2D游戏。我想创建一些对象来让事情变得更简单。目前只需绘制一个Quad对象就可以正常工作,但后来我决定实现一种绘制Quad对象的方式。在OpenGL中旋转Quad无法正确显示(rotatef)

这是到目前为止的代码用于绘制旋转四:

@Override 
public void draw(float angle) { 
    glMatrixMode(GL_MODELVIEW); 
    glLoadIdentity(); 

    // translate the quad to the origin before rotation 
    glTranslatef(-(this.x + (this.w/2)), -(this.y + (this.h/2)), 0); 

    glRotatef(angle, (this.x + (this.w/2)), (this.y + (this.h/2)), 0); 

    // translate the quad back to its original position 
    glTranslatef((this.x + (this.w/2)), (this.y + (this.h/2)), 0); 

    glColor4f(this.color.getRed(), this.color.getAlpha(), this.color.getBlue(), this.color.getAlpha()); 
    glBegin(GL_QUADS); 
     glVertex2f(this.x, this.y); 
     glVertex2f(this.x + this.w, this.y); 
     glVertex2f(this.x + this.w, this.y + this.h); 
     glVertex2f(this.x, this.y + this.h); 
    glEnd(); 
} 

我这样做是为了画一个四 四Q =新的四(10,10,100,100); // new Quad(x,y,w,h) q.draw(Math.PI); //它是180度,但喜欢它

它不绘制Quad和这是如何绘制

Quad

我不知道这到底是怎么回事。

作为一个方面的问题

难道是一样的效果,如果我只是使用2D旋转矩阵来计算新的x和y,然后简单地计算出其它的X和Y的?

回答

3

参数glRotatef定义轴。并且您想围绕z轴旋转。因此:

glRotatef(angle, 0, 0, 1); 
+0

哦,我明白了,感谢那尼科。我现在觉得这很愚蠢 – PurityLake