这里没有任何问题可以提供帮助。我想在LWJGL的中心周围旋转一个sprite,一个带纹理的四边形。
这是我的代码,目前,它围绕其他中心旋转。
public void draw(int x, int y, int rot) {
//存储当前的模型矩阵 glPushMatrix();
// bind to the appropriate texture for this sprite
texture.bind();
// translate to the right location and prepare to draw
glTranslatef(x, y, 0);
glRotatef(rot,0f,0f,1f);
// draw a quad textured to match the sprite
glBegin(GL_QUADS);
{
texture.bind(); // or GL11.glBind(texture.getTextureID());
glBegin(GL_QUADS);
glTexCoord2f(0,0);
glVertex2f(100,100);
glTexCoord2f(1,0);
glVertex2f(100+texture.getTextureWidth()*2,100);
glTexCoord2f(1,1);
glVertex2f(100+texture.getTextureWidth()*2,100+texture.getTextureHeight()*2);
glTexCoord2f(0,1);
glVertex2f(100,100+texture.getTextureHeight()*2);
glEnd();
}
glEnd();
// restore the model view matrix to prevent contamination
glPopMatrix();
}
答案 0 :(得分:4)
围绕它们的中心(或任何偏移点,实际上)旋转2d精灵意味着将要旋转的点平移到窗口的原点。如果它是精灵的中间,这意味着将精灵转换为点:
-sprite.width / 2,-sprite.height / 2
设想精灵在屏幕区域中“绘制”四分之一,此时在屏幕区域中四分之三。现在是旋转它的时间,它仍将围绕原点旋转,但现在也恰好是精灵的中间。最后,将精灵转换回你希望它在屏幕上的位置
在旁注中,我不明白为什么人们评论他的方式已被弃用。这与问题完全无关,并且有些人不想使用新功能。