我目前正在使用LWJGL创建一个简单的2D游戏。我想创建一些对象以使事情变得更容易。目前简单地绘制Quad对象工作正常,但后来我决定实现一种绘制四边形旋转的方法。
这是绘制旋转Quad的代码:
@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();
}
我这样画一个Quad Quad q = new Quad(10,10,100,100); //新四(x,y,w,h) q.draw(Math.PI); //它是180度,但它不像它那样画出四边形
这就是它的绘制方式
我不确定这里发生了什么。
作为附带问题
如果我只是使用2D旋转矩阵来计算新的x和y,然后简单地计算其他x和y,那会不会产生同样的效果?
答案 0 :(得分:3)
glRotatef
的参数定义轴。并且您想围绕z轴旋转。因此:
glRotatef(angle, 0, 0, 1);