我想在LWJGL中围绕它的中心旋转一个精灵

时间:2013-02-23 00:26:24

标签: java opengl geometry lwjgl

这里没有任何问题可以提供帮助。我想在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();
}

1 个答案:

答案 0 :(得分:4)

围绕它们的中心(或任何偏移点,实际上)旋转2d精灵意味着将要旋转的点平移到窗口的原点。如果它是精灵的中间,这意味着将精灵转换为点:
-sprite.width / 2,-sprite.height / 2
设想精灵在屏幕区域中“绘制”四分之一,此时在屏幕区域中四分之三。现在是旋转它的时间,它仍将围绕原点旋转,但现在也恰好是精灵的中间。最后,将精灵转换回你希望它在屏幕上的位置 在旁注中,我不明白为什么人们评论他的方式已被弃用。这与问题完全无关,并且有些人不想使用新功能。